文本文件中的给定数据:
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 '/^string1/{i=0} /^string1/,/^string2/{i++; if (i<5) print; next}1' file
string1 EP00 37.45 83.83
save
save
save