두 기호 사이의 문자열을 일치시키고 바꾸기

두 기호 사이의 문자열을 일치시키고 바꾸기

다음과 같은 링크가 많은 파일이 있습니다.

http://example.com/mall/mall/detail3.jsp?proID=2114280
http://example.com/mall/member/member/bookshelves/add.jsp?proID=3354136&productName=something
http://example.com/mall/bestbookTW//mall/detail3.jsp?proID=3435839&c=532166&id=954325

나는 그것이 다음과 같이 보이기를 원합니다 :

http://example.com/mall/mall/detail3.jsp?proID=FUZZ
http://example.com/mall/member/member/bookshelves/add.jsp?proID=FUZZ&productName=FUZZ
http://example.com/mall/bestbookTW//mall/detail3.jsp?proID=FUZZ&c=FUZZ&id=FUZZ

sed, grep 또는 awk를 사용하여 이 작업을 어떻게 수행할 수 있나요?

답변1

또한 시도

awk 'gsub("=[^&]*", "=FUZZ")' file 
http://example.com/mall/mall/detail3.jsp?proID=FUZZ
http://example.com/mall/member/member/bookshelves/add.jsp?proID=FUZZ&productName=FUZZ
http://example.com/mall/bestbookTW//mall/detail3.jsp?proID=FUZZ&c=FUZZ&id=FUZZ

답변2

떨어져 perl있는:

$ perl -pe 's/=(.+?)(&|$)/=FUZZ$2/g' file 
http://example.com/mall/mall/detail3.jsp?proID=FUZZ
http://example.com/mall/member/member/bookshelves/add.jsp?proID=FUZZ&productName=FUZZ
http://example.com/mall/bestbookTW//mall/detail3.jsp?proID=FUZZ&c=FUZZ&id=FUZZ

아이디어는 줄의 =다음 &또는 끝( $) 까지 a 및 모든 후속 문자열을 바꾸는 것입니다 FUZZ.

표준 출력으로 인쇄하는 대신 원본 파일을 수정하려면 다음을 사용하십시오 -i.

perl -i -pe 's/=(.+?)(&|$)/=FUZZ$2/g' file 

또는 다음을 사용하십시오 sed.

$ sed -E 's/=([^&]*)/=FUZZ/g' file 
http://example.com/mall/mall/detail3.jsp?proID=FUZZ
http://example.com/mall/member/member/bookshelves/add.jsp?proID=FUZZ&productName=FUZZ
http://example.com/mall/bestbookTW//mall/detail3.jsp?proID=FUZZ&c=FUZZ&id=FUZZ

다음을 사용하여 원본 파일을 다시 편집하십시오 -i.

sed -i -E 's/=([^&]*)/=FUZZ/g' file 

동일한 방법을 사용할 수도 있습니다 perl.

perl -i -lpe 's/=([^&]*)/=FUZZ/g' file 

관련 정보