두 단어 사이에 무엇이 있는지에 관계없이 모든 데이터를 제거하고 싶습니다. 두 단어는 표시된 대로 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