Bash 使用awk基于图案插入线
我有一个平面文件1,格式如下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
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