(예를 들어) stdin으로 다음이 있다고 가정해 보겠습니다.
Life is temporary
나는 sed가 이것을 다음으로 대체하기를 원합니다.
Life is permanent
어딘가에 명령을 사용하여
sed 's/Life<%XY=.*>temporary/Life%XYpermanent'
물론 위의 내용은 유효한 명령이 아니며 예시를 위한 것임을 알고 있습니다. 일치하는 모든 항목을 변수에 저장하고 .*
교체 문자열에서 해당 변수를 호출하고 싶습니다.
답변1
sed 's/Life\(.*\)temporary/Life\1permanent/'
여기서는 \1
패턴의 첫 번째 괄호 쌍을 나타냅니다. 이 경우 유일한 쌍이지만 일반적으로 더 많은 쌍을 가질 수 있으며 등을 최대 까지 사용할 \2
수 \3
있습니다 \9
.
괄호는 이스케이프됩니다. 그렇지 않으면 \
문자 그대로 받아들여지고 \1
작동하지 않을 것입니다. then을 사용하면 sed -E
반전됩니다. (
특별하고 \(
리터럴을 나타냅니다 (
(일반적으로 유일한 차이점은 아닙니다 -E
).
sed -E 's/Life(.*)temporary/Life\1permanent/'
이러한 변화로 인해 우리 sed
코드는 사람이 좀 더 읽기 쉽게 되었습니다.