문자 쌍 사이의 문자열 바꾸기

문자 쌍 사이의 문자열 바꾸기

sites.txt아래와 같이 긴 URL이 포함된 동적 사이트가 포함 된 파일이 있습니다 .

http://onesite.com/a.php?one=1&two=2&three=3
http://anothersite.com/b.php?one=1&two=2    
http://aaaandanothersite.com/a.php?one=1&two=2&three=3&four=4

모든 매개변수 값을 제거해야 하는데 출력은 다음과 같습니다.

http://onesite.com/a.php?one=&two=&three=    
http://anothersite.com/b.php?one=&two=    
http://aaaandanothersite.com/a.php?one=&two=&three=&four=

정규 표현식이나 단축키가 있다면 듣고 싶습니다. 하지만 이렇게 한 줄로 처리할 수 없다면 해당 사이트는 이미 for 함수에 있으므로 한 줄씩 처리할 수도 있습니다.

답변1

사용 sed:

sed -E 's/=[^&]*(&|$)/=\1/g' sites.txt

교체 =뒤에는 임의의 문자( \newline 제외)가 따르지만 줄 끝( ) &(0 또는 도함수)으로 끝나는 문자는 없습니다.[^&]*&|$(&|$)그리고Just =및 캡처된 그룹 (&|$)과 해당 \1역참조를 문자로 반환 &하거나 이것이 마지막 인수임을 나타내는 아무것도 반환하지 않습니다.

답변2

Perl을 사용하면 다음과 같이 실행할 수 있습니다.

perl -ple 's/=[^&=]*/=/g' sites.txt

어디:

  • perl -ple exp동등하다종결자가 없는 각 줄에 대해 print(exp(line))

관련 정보