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=
正規表現やショートカットがあれば聞きたいです。ただし、このように1行で処理できない場合、そのサイトはすでにfor関数にあるため、1行ずつ処理することもできます。
答え1
使用sed
:
sed -E 's/=[^&]*(&|$)/=\1/g' sites.txt
置換=
の後には任意の文字(\n
ewlineを除く)が続きますが、行末()&
(0または導関数)で終わる文字はありません。[^&]*
&
|
$
(&|$)
そしてJust=
とキャプチャされたグループ(&|$)
とその\1
逆参照を文字として返す&
か、これが最後の引数であることを示す何も返しません。
答え2
Perlでは、次のように実行できます。
perl -ple 's/=[^&=]*/=/g' sites.txt
どこ:
perl -ple exp
等しい終端子を持たない行ごとに print(exp(line))