Text-Processing

替換字元對之間的字元串

  • December 31, 2020

有一個名為的文件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 功能中,因此也可以逐行處理

使用sed

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

替換=後跟任何字元(除ewline )***,***但\n不是以行(_它表示這是最後一個參數。&``[^&]*``&``|``$``(&|$)``=``(&|$)``\1``&

使用 Perl,你可以執行一些類似的東西

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

在哪裡:

  • perl -ple exp相當於對於沒有終止符的每一行, print(exp(line))

引用自:https://unix.stackexchange.com/questions/626958