试图删除文件中的4行。 首先要删除模式匹配行,还需要在模式匹配前删除3行。
Eg:
1.land service=bus
2.land service=car
3.land service=truck
4.land service=cycle
5.
6.air service=plane
7.air service=rocket
我的模式匹配项位于第6行(即:air service = plane),因为我需要删除该行的6,5、4和3。
My output looks like.
1.land service=bus
2.land service=car
3.air service=rocket
尝试以下代码: grep -B2'air service = plane'pattern.txt | sed -n'1,3p'
我正在尝试使用sed和awk删除文件中的这些行,请您告诉我这样做的最佳方法。
答案 0 :(得分:2)
一个选项正在使用tac
和sed
,如下所示:
tac file | sed '/air service=plane/,+3d' | tac
要保存更改,请使用一个临时文件:
tac file | sed '/air service=plane/,+3d' | tac > tmpfile && mv tmpfile file
答案 1 :(得分:0)
尝试一下:
tac yourfile.txt | sed "/air service=plane/{N;N;N;d}" | tac
说明:
tac yourfile.txt # reverse file
sed "/air service=plane/ # find pattern
{N;N;N;d}" # concatenate next 3 lines (N) and delete (d)
tac # reverse output
输出
1.land service=bus
2.land service=car
7.air service=rocket