Philippe Glaziou <[EMAIL PROTECTED]> writes: > > Er, no, that wasn't the requirement. It's a job for awk or perl, e.g. > > > > #!/usr/bin/perl -n > > if (/pattern 1/){ > > $copy = 1; > > next; > > } > > if (/pattern 2/){ > > $copy = 0; > > } > > print if $copy; > > > > or > > > > awk '/pattern 1/{copy=1;next};/pattern 2/{copy=0};copy==1' < file.txt > file2.txt > > > Peter, I cannot see your point. sed can get rid of any pattern in > a text file. Fuensanta's example seemed to show that the > sentences (pattern 1, 2,...) were on separate lines from lines > containing data, thus my approach. Another one closer to your awk > example would use: > > sed -e '/pattern 1\|pattern 2\|pattern xyz//g' <file.txt>file2.txt > > Or is this just a perl versus sed versus awk troll?
Data was 2.22 3.45 1.56 2.31 pattern 1 4.67 7.91 3.34 2.15 5.32 3.88 pattern 2 blueberry:~/> sed -e 's/pattern 1\|pattern 2\|pattern xyz//g' < tst.txt 2.22 3.45 1.56 2.31 4.67 7.91 3.34 2.15 5.32 3.88 blueberry:~/> awk '/pattern 1/{copy=1;next};/pattern 2/{copy=0};copy==1' < tst.txt 4.67 7.91 3.34 2.15 5.32 3.88 blueberry:~/> perl -ne 'if(/pattern 1/){$copy=1;next;} if(/pattern 2/){$copy=0;}print if $copy' < tst.txt 4.67 7.91 3.34 2.15 5.32 3.88 blueberry:~/> The original message started: "Does anyone know how I can read from a .txt file the lines that are between two strings whose location is unknown?" -- O__ ---- Peter Dalgaard Blegdamsvej 3 c/ /'_ --- Dept. of Biostatistics 2200 Cph. N (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907 ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help