나는 이 질문이 아마도 이전에 답변되었을 것이라는 것을 알고 있습니다. 이 질문에 대한 게시물을 여러 곳에서 많이 봤지만 대개 답변을 찾는 데 어려움을 겪습니다. "sed" 명령의 사용 예에 대한 도움을 찾고 있습니다.
"hello.txt" 파일(프롬프트와 동일한 디렉터리에 있음)에 대해 작업을 수행한다고 가정해 보겠습니다. "few"라는 문구가 포함된 모든 위치는 "asd"로 변경되어야 합니다. 그 명령은 어떤 모습일까요?
답변1
sed
~이다에스트레메편집하다이토르|
, (파이프)를 사용하여 보낼 수 있으므로표준 스트림(특히 STDIN 및 STDOUT) sed
프로그래밍 방식으로 즉시 변경하면 Unix 철학적 전통에서 편리한 도구가 되지만 -i
아래에 언급된 매개변수를 사용하여 파일을 직접 편집할 수도 있습니다.
다음을 고려하세요:
sed -i -e 's/few/asd/g' hello.txt
s/
에 익숙해에스찾은 표현식을 few
다음으로 바꾸십시오 asd
.
몇몇, 용감한.
asd, 용감한 사람.
/g
"글로벌"을 의미하며 전체 생산 라인에 대해 이 작업을 수행한다는 의미입니다. 생략하고 /g
(사용 s/few/asd/
, 어쨌든 항상 슬래시 3개가 필요함) few
같은 줄에 두 번 나타나는 경우 첫 번째 슬래시만 few
다음으로 변경됩니다 asd
.
남자 몇 명, 여자 몇 명, 용감한 사람들.
외로운 남자, 소수의 여자, 용감한 남자.
이는 인용된 대수적 부등식을 그대로 유지하면서 줄 시작 부분의 특수 문자를 변경하는 것과 같은 일부 경우에 유용합니다(예: 이메일 스레드에서 이전 자료를 인용하기 위해 일부 사람들이 사용하는 보다 큼 기호를 가로 탭 문자로 대체). 줄 뒤에는 영향을 받지 않음), 그러나 지정한 예에서는어딘가에 few
발생 시 교체해야 하므로 반드시 구비해 두십시오 /g
.
다음 두 가지 옵션(플래그)이 하나로 결합됩니다 -ie
.
-i
편집 옵션나n 파일에 hello.txt
.
-e
옵션 표현이자형실행할 표현식/명령입니다. 이 경우에는 s/
.
-i -e
참고: 검색/바꾸기를 사용하는 것이 중요합니다. 이렇게 하면 -ie
문자 "e"가 추가된 각 파일의 백업이 생성됩니다.
답변2
sed -i 's/fea/asd/g' hello.txt
G:글로벌
에스:바꾸다
-나: 파일을 실시간으로 처리합니다.제자리에