2 つのシンボル間の文字列を一致させて置換する

2 つのシンボル間の文字列を一致させて置換する

次のようなリンクが多いファイルがあります。

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 

関連情報