如何在linux中删除上面2行,下面1行以及删除匹配的模式行

问题描述 投票:0回答:1

我想删除上面 2 行、下面 1 行,并从 Linux 的日志文件中删除匹配的模式行。

以下是文件,

  • 猫文件

  • 这是第一个

  • 这是第二个

  • 这是第三个

  • 这是第四个

  • 这是第五个

  • 这是第六个

  • 这是七

  • 这是八个

  • 这是九个

  • 这是第一个

  • 这是第二个

  • 这是第三个

  • 这是第四个

  • 这是第五个

  • 这是第六个

  • 这是七

  • 这是八个

  • 这是九个

预期产出,

  • 猫想要的_输出

  • 这是第一个

  • 这是第六个

  • 这是七

  • 这是八个

  • 这是九个

  • 这是第一个

  • 这是第六个

  • 这是七

  • 这是八个

  • 这是九个

尝试使用 grep -B 2 -A 1 -v“这是第四个”,但它不起作用。

linux awk sed
1个回答
0
投票

使用

awk

pat="$(grep -B2 'this is fourth' file | head -n1)"
awk -v pat="$pat" 'BEGIN{p=1} ($0 ~ pat){p=0} /^$/ || /this is sixth/{p=1} p' file
© www.soinside.com 2019 - 2024. All rights reserved.