파일에 "mode v"와 같은 단어가 있습니다. "mode sv"로 바꾸고 싶습니다. 그러나 패턴 뒤에 공백이 있기 때문에 모든 노력이 실패했습니다.
답변1
sed
이렇게 검색하고 바꿀 수 있습니다 .
$ sed 's/mode v/mode sv/g'
예
다음 샘플 파일이 있다고 가정해 보겠습니다.
$ cat afile.txt
mode v modev mode v
blah
blah blah modev mode
blah
modev mode v
sed
파일을 검색/교체하고 다음과 같이 백업을 유지하는 데 사용할 수 있습니다 .
$ sed -i.bak 's/mode v/mode sv/g' afile.txt
이제 2개의 파일이 있습니다.
$ ls -ltr | grep afile
-rw-rw-r--. 1 slm slm 64 Sep 23 20:13 afile.txt.bak
-rw-rw-r--. 1 slm slm 67 Sep 23 20:15 afile.txt
원본 텍스트가 다음과 같이 수정되었습니다.
$ cat afile.txt
mode sv modev mode sv
blah
blah blah modev mode
blah
modev mode sv
노트:보장된 단어 경계로 필요한 경우 mode v
검색에 접미사를 추가 할 수 있습니다 \b
.
$ sed -i.bak 's/mode v\b/mode sv/g' afile.txt
답변2
주석의 솔루션은 mode가 줄의 첫 번째 단어이고 "mode" 뒤의 모든 단어를 "sv"로 바꾸는 경우에만 작동합니다. 귀하의 질문으로 볼 때 이는 귀하의 의도가 아니라고 생각됩니다. 복잡하게 할 이유가 없고 단순하게 유지하세요
sed 's/mode /mode s/g'
작동해야합니다. 또는
sed s/"mode "/"mode s"/g