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 '!/\.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줄( )에 추가되고 각 줄이 인쇄됩니다( ).$01;

관련 정보