文本文件中的给定数据:

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

我想使用sedawk来匹配string1和string 2,然后删除string1和前3行之后的所有内容。我希望它也删除string2,但不删除string1。同时删除这段文字和下一段文字之间的一行。因此,预期产出将是:
string1 EP00 37.45 83.83
save
save
save

如果有帮助的话,两个模式之间的行数总是相同的(16)。我想用sedawk来实现这一点,但我只能找到一个脚本来删除这两个字符串之间的整个数据块:
sed '/string1/,/string2/{//!d}' file >> tr.txt

是否有人知道如何指定保留string1及其后的三行,并删除两个模式(包括string2)之间的其余行?我想用sedawk来完成,以较容易的为准。
谢谢!

最佳答案

你可以用这个锥子:

awk '/^string1/{i=0} /^string1/,/^string2/{i++; if (i<5) print; next}1' file
string1 EP00 37.45 83.83
save
save
save

08-07 03:51