Bash 使用awk基于图案插入线

Bash 使用awk基于图案插入线,bash,awk,sed,Bash,Awk,Sed,我有一个平面文件1,格式如下 Keyword: First line Keyword: line1 Line2 Keyword: abc def jkl Keyword: 123456 opertxt 我正在使用下面的awk命令并在file2中获得输出 awk 'BEGIN { RS = "Keyword:" } {$1=$1} 1' file1 > file2 文件2看起来像这样 First line line1 Line2 abc def jkl 123456 opertx

我有一个平面文件1,格式如下

Keyword:
First line

Keyword:
line1 
Line2

Keyword:
abc
def
jkl

Keyword:
123456
opertxt
我正在使用下面的awk命令并在file2中获得输出

awk 'BEGIN { RS = "Keyword:" } {$1=$1} 1' file1 > file2
文件2看起来像这样

First line
line1 Line2
abc def jkl
123456 opertxt
我不想这样输出,而是希望像下面的模式一样输出,删除带有关键字的行

First line

line1 
Line2

abc
def
jkl

123456
opertxt
有人可以建议使用awk或sed的解决方案吗。
谢谢

您可以使用以下任一选项:

sed '/^Keyword:$/d' file
sed
查找恰好是
关键字:
的行,然后
d
删除它们

awk '$0 == "Keyword:" {next} 1' file
它会检查恰好是
关键字:
的行,并使用
next
跳过它们。然后
1
为True,因此它执行默认的awk操作:
{print$0}

或者更好、更短():

输出:
sed'/keyword:/d'文件名
对的web搜索会给出大量结果。一旦我使用sed'/^keyword:$/d'获得输出,文件可能会重复,是否可以使用删除空行?sed“/^\n$/d”文件是否还要删除空行?您可以使用<代码> SED S/^ $ /d文件或<代码> AWK'NF>=1′< /COD> >是的,我想删除所有空白行。谢谢我将使用sed命令+1表示两种解决方案。
awk
可以写成
awk'$0=关键词:“'file
Oh@jaypal,有意义,甚至更好。更新,谢谢!
awk '$0 != "Keyword:"' file
$ awk '$0 == "Keyword:" {next} 1' file
First line

line1
Line2

abc
def
jkl

123456
opertxt

$ sed '/^Keyword:$/d' file
First line

line1
Line2

abc
def
jkl

123456
opertxt