아래와 같이 파일의 문자열/URL 목록을 고려하십시오.
$ cat urls.txt
https://example.com/index.php?param1=value1¶m2=value2¶m3=value3
https://example2.com/home.php?param1=value1¶m2=value2
아래와 같이 매개변수 값을 제거해야 합니다.
$ cat replaced.txt
https://example.com/index.php?param1=¶m2=¶m3=
https://example2.com/home.php?param1=¶m2=
어떻게 해야 하나요? 나는 다음을 사용하여 여러 변형을 시도했습니다.sed궁극적으로 사이의 모든 것을 대체합니다.=그리고&다음과 같이
$ sed -r 's/(=)(.*)(&)/\1\3/g' urls.txt
https://example.com/index.php?param1=¶m3=value3
https://example2.com/home.php?param1=¶m2=value2
감사해요
답변1
시도해 보세요
sed -r 's/(=)([^=]*)(&)/\1\3/g;s/(=)([^=]*)$/\1/'
어디
s/(=)([^=]*)(&)/\1\3/g
첫 번째 패턴에서 교체를 수행param=value
하지만 중지합니다=
(탐욕스러운 일치를 피하기 위해).s/(=)([^=]*)$/\1/
마지막 패턴 바꾸기
답변2
다음 명령을 사용해보십시오
sed -e "s/[a-z]*[0-9]\&/\&/g" -e "s/[a-z]*[0-9]$//g" filename
산출
https://example.com/index.php?param1=¶m2=¶m3=
https://example2.com/home.php?param1=¶m2