sed + 仅当单词未出现时才在每个字符串上添加最后一个单词

sed + 仅当单词未出现时才在每个字符串上添加最后一个单词

我有以下文件:

linuxA.mtt.corp
linux3V
linux4B
linux2A
linux5v.mtt.corp

如何.mtt.corp在每个没有这个单词的字符串上添加 ?

答案1

这很简单sed

sed -e '/\.mtt\.corp$/!s/$/.mtt.corp/' <file

这确实会在不以该字符串结尾的每一行上s替换行尾。.mtt.corp

答案2

Perl 解决方案:

$ perl -lpe '$_ .= ".mtt.corp" if !/\.mtt\.corp$/' file
linuxA.mtt.corp
linux3V.mtt.corp
linux4B.mtt.corp
linux2A.mtt.corp
linux5v.mtt.corp

在应用 给定的脚本后打印输入文件的每一行,-p并从每个输入行中删除尾随换行符并为每个调用添加一个换行符。变量是当前行。因此,如果该行尚未匹配, 则会将其添加到该行中。perl-e-lprint$_mtt.corp

awk 解决方案:

$ awk '!/\.mtt\.corp$/{$0=$0".mtt.corp"}1;' file
linuxA.mtt.corp
linux3V.mtt.corp
linux4B.mtt.corp
linux2A.mtt.corp
linux5v.mtt.corp

同样的想法。.mtt.corp添加到任何$0不以其结尾的行 ( ) 中,并打印每行 ( 1;)。

相关内容