给定文本文件中的数据:
string1 EP00 37.45 83.83 save save save gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish string2 gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish
我想使用sed或awk匹配string1和string 2,然后删除string1和前3行之后的所有内容.我想删除string2,但不删除string1.并删除该文件与下一文本之间的一行.所以预期的产量是:
string1 EP00 37.45 83.83 save save save
如果这有助于(16),则两个模式之间总有相同数量的行.我想用sed或awk做这个,但只能找出一个脚本来删除两者之间的整个数据块,保留两个字符串:
sed '/string1/,/string2/{//!d}' file >> tr.txt
有谁知道如何指定保留string1及其后面的三行,并删除两个模式之间的其余行,包括string2?我想用sed或awk这样做,哪个更容易.
谢谢!
解决方法
你可以使用这个awk:
awk '/^string1/{i=0} /^string1/,/^string2/{i++; if (i<5) print; next}1' file string1 EP00 37.45 83.83 save save save