sed 명령이 포함된 파일이 필요합니다. 이와 같은 파일이 있습니다.
amb/eng/hello.amb
다음과 같은 출력이 필요합니다
amx/eng/hello.amx
amx-grk/eng/hello.amx
누구든지 나를 도와줄 수 있나요?
답변1
당신이 사용할 수있는 sed -e 's/amb/amx/gp' -e 's/amx/&-grk/' yourfile
.
전임자.
$ echo 'amb/eng/hello.amb' | sed -e 's/amb/amx/gp' -e 's/amx/&-grk/'
amx/eng/hello.amx
amx-grk/eng/hello.amx
답변2
이는 다음과 유사합니다.스틸 드라이버의 답변, 그러나 일치가 약간 더 엄격합니다.
$ sed '\,^amb/\(.*\)\.amb$, { s,,amx/\1.amx,p; s/amx/&-grk/; }' file
amx/eng/hello.amx
amx-grk/eng/hello.amx
amb/
위 명령에서는 로 시작하고 끝나는 줄을 찾고 있다고 가정합니다 .amb
. 이러한 행이 발견되면 실행된 초기 바꾸기 명령은 두 하위 문자열을 각각 amx/
및 로 변경한 .amx
다음 수정된 행을 출력합니다. 두 번째 대체는 amx
초기 문자열(줄의 시작 부분에 나타나는 것으로 알고 있음)을 로 변경합니다 amx-grk
. 두 번째 수정 결과는 루프 끝의 기본 출력으로 출력됩니다.
스크립트 시작 부분에 regex를 실행하는 구분 기호로 쉼표를 사용 sed
하고 s
명령에 슬래시를 포함하고 싶기 때문에 중괄호 안에 있는 표현식 그룹 내의 명령을 사용하고 있습니다.
이 정확한 명령을 작성하는 또 다른 방법은 b
("branch")를 다음과 같이 사용하는 것입니다.아니요초기 정규식과 일치하지 않는 줄을 수정합니다. 이를 통해 명령을 세 가지 별도의 표현식으로 작성할 수 있습니다.
$ sed -e '\,^amb/\(.*\)\.amb$, !b' -e 's,,amx/\1.amx,p' -e 's/amx/&-grk/' file
amx/eng/hello.amx
amx-grk/eng/hello.amx
답변3
다음을 시도해 볼 수 있습니다.
sed 's/amb/amx/g' | awk -F'/' '{print $1"/"$2"/"$3 " " $1"-grk/"$2"/"$3}'
예를 들어
$ echo 'amb/eng/hello.amb' | sed 's/amb/amx/g' | awk -F'/' '{print $1"/"$2"/"$3 " " $1"-grk/"$2"/"$3}'
amx/eng/hello.amx amx-grk/eng/hello.amx