他の部分文字列が存在しない場合にのみ、部分文字列を検索して置き換えます。

他の部分文字列が存在しない場合にのみ、部分文字列を検索して置き換えます。

非常に大きな文書には次の文字列があります。

1.test.html#
2.test.md#
3.http://test.html#
4.https://test.md#
5.http://test.md#
6.test2.md#

今、文字列に何もない.md#場合にのみ、それぞれを次のように置き換えたいと思います。したがって、2と6のみを交換する必要があります。シェルスクリプトでこれをどのように実行できますか?.html#http

ベストアンサー1

GNU sedを使用してください。現在の行(パターンスペース)にhttpスクリプトの終わり()が含まれている場合は、スクリプトの最後に移動しますb。それ以外の場合は検索して置き換えてください。

sed '/http/b; s/\.md#/.html#/' file

出力:

1.テスト.html#
2.テスト.html#
3.http://test.html#
4.https://test.md#
5.http://test.md#
6.テスト2.html#

ファイルを「所定の位置に」編集するには、sedのoptionsを使用します-i


望むより:man sed

おすすめ記事