같은 줄에서 여러 항목 일치를 제어하기 위해 sed에 표현식을 작성하는 방법

같은 줄에서 여러 항목 일치를 제어하기 위해 sed에 표현식을 작성하는 방법

갖고 있다고 할 수 있어요

apples bananas oranges pomelos oranges 

바나나와 자몽은 다른 밧줄입니다.

내가 사용하는 것은 라인의 sed 's/apples.*oranges/applesandfriends/'두 번째 와 일치합니다.oranges

어떤 일치가 발생하는지 제어하는 ​​방법은 무엇입니까 oranges?

내가 얻는 결과는

applesandfriends

내가 원하는 결과는

applesandfriends pomelos oranges

답변1

를 사용하고 sed특수 문자를 n번째 키워드(주황색)로 바꾼 다음 해당 문자까지 일치를 수행합니다.

foo="apples bananas oranges pomelos oranges "

echo $foo | sed 's/oranges/#/1' | sed 's/apples.*#/applesandfriends/'

산출:

applesandfriends pomelos oranges

답변2

파일에서 처음 나타나는 주황색을 제거하여 다음 방법을 사용했습니다.

perl -pne "s/ /\n/g" o.txt|sed '/^$/d'| sed '0,/oranges/s/oranges//g'| sed '/^$/d'| perl -pne "s/\n/ /g"| sed "s/apples.*bananas/applesandfriends/g"

산출

applesandfriends pomelos oranges 

관련 정보