我有一个像
这样的文件nithin shetty
sachin shetty
pavan shetty
在这个文件中我想追加“你好我是我”,下一行是“shetty”模式。但条件是,如果该行匹配“nithin”,则不要追加该行。 我知道如何在模式匹配后追加一行,
sed '/shetty/a\
HELLO THIS IS ME
' filename`
但在此我不想要包含nithin
的行。输出应该是这样的:
nithin shetty
sachin shetty
HELLO THIS IS ME
pavan shetty
HELLO THIS IS ME
有可能吗?
答案 0 :(得分:3)
sed
解决方案的形式如下:
sed '/nithin/b; /shetty/a\ HELLO THIS IS ME' filename
在没有标签的情况下, b
会导致sed跳转到脚本的末尾。
答案 1 :(得分:2)
抱歉,我不知道sed
,但我知道Perl。
perl -nE'print; say "HELLO THIS IS ME" if /shetty/ && !/nithin/'
或
perl -pe'$_ .= "HELLO THIS IS ME\n" if /shetty/ && !/nithin/'
与sed
一样,
-i
进行就地编辑。答案 2 :(得分:0)
以下是使用awk
执行此操作的一种方法:
awk '!/nithin/ && /shetty/ { $0 = $0 "\n HELLO THIS IS ME" } 1' infile
输出:
nithin shetty
sachin shetty
HELLO THIS IS ME
pavan shetty
HELLO THIS IS ME