sed를 사용하여 다른 문자열을 캡처하려면 처음 두 정규식만 교체하세요.

sed를 사용하여 다른 문자열을 캡처하려면 처음 두 정규식만 교체하세요.

그래서 sed를 사용하여 정규식 패턴의 두 인스턴스를 다음과 같이 두 개의 다른 문자열로 변경해 보았습니다.

sed -E "s/\\t([A-Za-z]|[-])+$/\\t`get_addr.py -1`/" /path/to/file.ext
sed -E "s/\\t([A-Za-z]|[-])+$/\\t`get_addr.py -2`/" /path/to/file.ext

나는 많은 것을 시도했고 많은 맨 페이지 검색을 수행했지만 그것을 구현하는 방법을 잘 알 수 없습니다.

sed에게 각 일치 항목을 다른 문자열로 바꾸라고 지시하는 방법이 있습니까?

sed -E "s/\\t([A-Za-z]|[-])+$/[1st replacement],[2nd replacement]/" /path/to/file.ext

그리고/또는 sed를 두 번 호출할 수 있도록 n번째 일치 항목을 찾고 있음을 정규식에 지정하는 방법이 있습니까?

답변1

적어도 GNU sed에서는 다음과 같은 일을 할 수 있을 것 같아요.

sed -e '0,/pattern/ s//replacement1/' -e '0,/pattern/ s//replacement2/' file

예를 들어, 주어진 파일

abc
def
abc
ghi
abc
jkl

그 다음에

$ sed -e '0,/abc/ s//XYZ/' -e '0,/abc/ s//UVW/' file
XYZ
def
UVW
ghi
abc
jkl

관련 정보