Peter Dalgaard <[EMAIL PROTECTED]> wrote: > > > My problem is that I have a .txt file with data separated by a > > > sentence, for example: > > > > > > 2.22 3.45 > > > 1.56 2.31 > > > pattern 1 > > > 4.67 7.91 > > > 3.34 2.15 > > > 5.32 3.88 > > > pattern 2 > > > ... > > > > > > I do not know the number of lines where these separating > > > sentences are located, because the number of lines in between > > > them can be random. If it was fixed, I think I could use > > > "read.table" using the option "skip", but in this case, I do > > > not know how I could manage to do that automatically. > > > > > > This is a job for sed. The following command will delete any line > > not starting with a digit from "file.txt" and save the results in > > "file2.txt": > > > > cat file.txt | sed -e '/^$\|^[^0-9]/D' > file2.txt > > 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? -- Philippe ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help