sed를 사용하여 특수 문자 뒤의 문자열을 찾아 바꾸기

sed를 사용하여 특수 문자 뒤의 문자열을 찾아 바꾸기

고유 매개변수가 포함된 URL이 포함된 파일이 있는데, 그 중 일부에는 여러 매개변수가 있습니다. 모든 문자를 바꾸려고 합니다.뒤쪽에다른 것에 =.

예시 URL file-containing-urls.txt:

https://somewebsite.com/some/path/?parameter=value&another=somethingelse

명령 예 sed:

sed -r '/^\=/!s/=.*$/=somevalue/g' file-containing-urls.txt

이것이 작동하는 동안 첫 번째 인수만 대체하고 다른 인수는 대체하지 않습니다. 제 생각에는모두뒤에 오는 문자는 =특정 문자열입니다. 내 결과는 다음과 같습니다.

https://somewebsite.com/somepath/?param=mystring  --> Works
https://somewebsite.com/new/path/?param1=mystring&param2=removed  --> Only works for param1

두 번째 예에서는 내 문자열도 로 전송되기를 원 하지만 첫 번째 값만 바꾸고 나머지는 무시하는 param2것처럼 보입니다 . sed다른 모든 매개변수는 보기에서 제거됩니다. 나는 이 문제를 해결할 것이라고 생각했지만 /g항상 같은 결과를 얻었습니다. 감사합니다!

답변1

$ sed 's/=[^=&]*/=somevalue/g' file
https://somewebsite.com/some/path/?parameter=somevalue&another=somevalue

관련 정보