sed를 사용하여 한 단어를 찾아 다른 단어로 바꾸세요.

sed를 사용하여 한 단어를 찾아 다른 단어로 바꾸세요.

파일에 "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

관련 정보