두 단어 사이의 데이터 삭제

두 단어 사이의 데이터 삭제

두 단어 사이에 무엇이 있는지에 관계없이 모든 데이터를 제거하고 싶습니다. 두 단어는 표시된 대로 user및 입니다.Gecko)

예를 들어:

abcd: efgh user jfslkdj ajskdlfj askldjf Gecko) print
ijkl: mnop user fjskdf sdfjkdf skdjf sdkfj Gecko) second

다음과 같이 표시되어야 합니다.
abcd: efgh print
ijkl: mnop second

이것이 가능한지 알려주십시오.

지금까지 시도한 내용은 다음과 같습니다. 아직 멀었다는 것을 알고 있습니다.

sed 's/user*Gecko)//g'

답변1

다음과 같이 명령을 수정할 수 있습니다.

sed 's/user.*Gecko)//g'

하위 문자열이 제거됩니다 user.....Gecko).

당신은 그것을 사용할 수 있습니다 :

sed -Ee "s/(.*)(user.*Gecko\))(.*)/\1\3/g" filename

첫 번째와 세 번째 필드만 인쇄하고 두 번째 필드는 무시합니다. 여기에는 사용자와 Gecko 사이의 모든 내용이 포함됩니다.

user시작 단어나 Gecko)마지막 단어 가 아니라고 확신하는 경우 다음을 사용할 수 있습니다.

sed -Ee "s/(.*) (user.*Gecko\)) (.*)/\1 \3/g" filename

이는 공백으로 구분된 단어만 대체하므로 더 정확합니다.

답변2

다음 명령을 사용해 보았는데 잘 작동합니다.

awk '{print $1,$2,$NF}'  filename

산출

abcd: efgh print
ijkl: mnop second

관련 정보