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;)。

相關內容