一部の文字列を置き換える

一部の文字列を置き換える

次の内容を含むテキストファイルがあります。

yyyy-mm-dd, 12:34/s-show/...
yyyy-mm-dd, 13:24/s-show/...
yyyy-mm-dd, 14:32/s-show/...
yyyy-mm-dd/s-show

次に、各行の/ s-show / ...の前の部分文字列を次のような別の文字列に置き換えたいと思います。

https://www.testpage.com/s-show/...
https://www.testpage.com/s-show/...
https://www.testpage.com/s-show/...

これがどのように可能ですか?

ベストアンサー1

努力する:

$ sed -E 's@.*(/s-show)@https://www.testpage.com\1@' File
https://www.testpage.com/s-show/...
https://www.testpage.com/s-show/...
https://www.testpage.com/s-show/...
https://www.testpage.com/s-show

現在の場所でファイルを変更するには:

sed -Ei 's@.*(/s-show)@https://www.testpage.com\1@' File  # GNU (Linux)

または:

sed -Ei '' 's@.*(/s-show)@https://www.testpage.com\1@' File  # BSD (MacOS)

仕組み:

  • -Esedに拡張正規表現を使用するように指示します。これにより、特定のエスケープ文字が不要になります。

  • s@old@new@正規表現を見つけてold置き換える代替コマンドですnew

  • この例では、oldisは.*(/s-show)任意の数のすべての文字と一致し、.*その後に/s-showwhereが/s-showグループ1として保存されます。

  • この例では、グループ1に置き換えnewられています。https://www.testpage.com\1\1

おすすめ記事