使用awk基于模式插入行

时间:2014-05-12 08:58:32

标签: bash awk sed

我有以下格式的平面文件

Keyword:
First line

Keyword:
line1 
Line2

Keyword:
abc
def
jkl

Keyword:
123456
opertxt

我正在使用下面的awk命令并在file2中获取输出

awk 'BEGIN { RS = "Keyword:" } {$1=$1} 1' file1 > file2

file2看起来像这样

First line
line1 Line2
abc def jkl
123456 opertxt

我不想像这样输出,而是希望输出像下面的模式一样,删除关键字的行

First line

line1 
Line2

abc
def
jkl

123456
opertxt

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

1 个答案:

答案 0 :(得分:2)

您可以使用以下任何一种:

sed '/^Keyword:$/d' file

sed查找完全Keyword:d的行。{/ p>

awk '$0 == "Keyword:" {next} 1' file

它会检查完全Keyword:的行并使用next跳过它们。然后1为True,因此它会执行默认的awk操作:{print $0}

或更好更短(thanks 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