다음과 같은 스키마가 있습니다.
foo bar
항상 foo
동일하지만 bar
바뀔 수 있습니다. 해시 테이블이 있고 의 모든 값에 대해 bar
새로운 값이 있습니다. 내가 지금 하고 있는 일은:
sed -i 's/foo bar/foo new_value/g' file
foo
대체 문자열에서 중복을 피하는 방법이 있다고 확신합니다 . sed
비슷한 것을 제공 합니까 ? 좋다
sed -i 's/foo @@bar@@/new_value/g' file
@@string@@
교체해야 하는 값입니다.
답변1
sed -i 's/\(foo \)bar/\1new_value/g' file
이 \( \)
시퀀스는 텍스트를 "캡처"하여 대체 문자열로 배치할 수 있습니다 \1
. 이 작업은 \1
사용할 캡처된 텍스트를 나타내는 숫자를 사용하여 여러 번 수행할 수 있습니다 . 캡처된 텍스트는 순차적으로 계산됩니다 \(
.