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

관련 정보