[duplicate] を追加する代わりに sed を使用して検索を置き換える

[duplicate] を追加する代わりに sed を使用して検索を置き換える

標準出力に単純なURLテキストがあります。 URLの一部が下に表示されます。

https://somedomain./xx?t=s&u=random other text

コマンドラインでsedや他のものを使ってこれを変更したいと思います。

https://somedomain./xx?t=l&u=random other text

使ったsed -e 's/s&/l&/'

に置き換える代わりにs&文字列を入力しました。私の注文に問題がありますか?l&ls&

答え1

sコマンドの右側に「\」を追加して、コマンドの右側の「&」文字をエスケープする必要があります。これがなければ、「&」は特別で、正規表現に一致する項目に置き換えられます。左側の「&」は特別ではなく、特別でないことを保証します。 whileは&決して特別ではなく、\&特別であることは保証されず、一致する項目が指定されていないため、エスケープを避けたくありません。

だから:

sed -i 's/s&/l\&/g' file.txt

関連情報