요청 매개변수 값 삭제

요청 매개변수 값 삭제

아래와 같이 파일의 문자열/URL 목록을 고려하십시오.

$ cat urls.txt
https://example.com/index.php?param1=value1&param2=value2&param3=value3
https://example2.com/home.php?param1=value1&param2=value2

아래와 같이 매개변수 값을 제거해야 합니다.

$ cat replaced.txt
https://example.com/index.php?param1=&param2=&param3=
https://example2.com/home.php?param1=&param2=

어떻게 해야 하나요? 나는 다음을 사용하여 여러 변형을 시도했습니다.sed궁극적으로 사이의 모든 것을 대체합니다.=그리고&다음과 같이

$ sed -r 's/(=)(.*)(&)/\1\3/g' urls.txt
https://example.com/index.php?param1=&param3=value3
https://example2.com/home.php?param1=&param2=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=&param2=&param3=
https://example2.com/home.php?param1=&param2

관련 정보