Returning line before after searching for pattern
20 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Lauren
am 4 Dez. 2025 um 15:32
Beantwortet: Steven Lord
am 4 Dez. 2025 um 15:51
I am reading a text file and want to return the line before after encountering search criteria.
The data looks like:
Test 1
X
1
1
1
1
Test 2
X
1
1
1
So I would like to search for X and return the line before.
I was able to return X but not the line before. Thanks!
readfile = readlines(filename); %filename is a .txt file
pat = " X "; %pattern
A = contains(readfile,pat);
display = readfile(A);
0 Kommentare
Akzeptierte Antwort
Steven Lord
am 4 Dez. 2025 um 15:51
A is a logical array with the same number of rows as the string array readfile. So if you remove/ignore the first element of A, it uses the logical value for row 2 to determine whether or not to select row 1, the logical value for row 3 to determine whether or not to select row 2, etc.
readfile = readlines("sampleText.txt")
pat = "X";
A = contains(readfile,pat)
linesContainingX = readfile(A)
linesBeforeX = readfile(A(2:end))
Note that if the first line of the file matches the pattern, starting your indexing using element 2 of A will skip that line in linesBeforeX; but then again, there isn't a "line before" the first line.
linesContainingTest = contains(readfile, "Test")
linesBeforeContainingTest = readfile(linesContainingTest(2:end))
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Characters and Strings finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!