나는 사람들이 paths 를 다룰 때 대신 사용한다는 것을 알고 있지만 :
다음 작업에서는 무엇을 합니까?/
:g
sed
따옴표 사이에 path1이 있는 이유는 무엇입니까? 이 코드의 기능을 설명할 수 있는 사람이 있나요?
sed -i -e s:INPUT_REPLACE:"${path1}":g ${path2}
답변1
콜론은 :
패턴(왼쪽)과 대체 항목(오른쪽) 사이의 구분 기호입니다. g
sed에게 "전역" 교체를 수행하라고 지시합니다(주어진 줄의 첫 번째 줄만 변경하는 것이 아니라 패턴과 일치하는 모든 줄의 모든 항목을 변경합니다).
세 개의 구분 기호가 필요하므로 세 개의 콜론을 사용합니다. 따라서 :g
실제로 마지막 구분 기호와 수정자 "g"라는 두 가지가 있습니다.
이 부분의 표현을 인용하면"${path1}"
명령에서 오류를 일으키는 일부 문자가 포함되어 있습니다(변수를 대체할 때). 예를 들어, 쉘에 의해 전달된 대체 인수는 공백이나 탭이 포함된 경우 sed
두 부분(오류)으로 분할됩니다 .
그럼... 이 명령은
sed -i -e s:INPUT_REPLACE:"${path1}":g ${path2}
sed
동일한 파일을 읽고 쓰 도록 지시합니다 ( -i
옵션). 파일은 입니다 ${path2}
. 각 줄의 해당 문자열을 포함하는 줄을 찾아 "INPUT_REPLACE"
변수에 있는 내용으로 바꿉니다 ${path1}
. "INPUT_REPLACE"
모든 행의 모든 항목에 대해 이 작업을 수행합니다 .
참고: "${path1}"에 "INPUT_REPLACE"가 포함되어 있거나 대체가 발생 sed
하면아니요다시 실행하고 교체하세요. 이는 초기 일치에서만 수행됩니다.