Returning line before after searching for pattern
12 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Lauren
le 4 Déc 2025
Réponse apportée : Steven Lord
le 4 Déc 2025
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 commentaires
Réponse acceptée
Steven Lord
le 4 Déc 2025
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 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Characters and Strings dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!