sed:需要删除除了匹配字符串的第一行或最后一行之外的所有行

时间:2013-12-24 09:42:34

标签: regex shell sed awk sh

我有一个包含以下内容的文本文件

aa : 01
bb : 01
cc : 01
aa : 02
dd : 01
bb : 02
ee : 01
aa : 03
ff : 01
bb : 03

我需要首先出现其中包含字符串“aa”的行,并且最后一次出现包含字符串“bb”的行。

请帮忙。 输出应该是

aa : 01
cc : 01
dd : 01
ee : 01
ff : 01
bb : 03

1 个答案:

答案 0 :(得分:3)

你可以使用这个awk:

awk '!c && /^aa/{c=1;print;next} /^bb/{l=$0;next} !/^aa/ {print} END{print l}' file
aa : 01
cc : 01
dd : 01
ee : 01
ff : 01
bb : 03