sedを使用して別の文字列をキャプチャするには、最初の2つの正規表現のみを置き換えます。

sedを使用して別の文字列をキャプチャするには、最初の2つの正規表現のみを置き換えます。

そのため、sedを使用して正規表現パターンの2つのインスタンスを次のように2つの異なる文字列に変更してみました。

sed -E "s/\\t([A-Za-z]|[-])+$/\\t`get_addr.py -1`/" /path/to/file.ext
sed -E "s/\\t([A-Za-z]|[-])+$/\\t`get_addr.py -2`/" /path/to/file.ext

私は多くのことを試して、多くのマンページ検索を行いましたが、それを実装する方法をよく知りません。

sedに、各一致を別の文字列に置き換えるように指示する方法はありますか?

sed -E "s/\\t([A-Za-z]|[-])+$/[1st replacement],[2nd replacement]/" /path/to/file.ext

そして/またはsedを2回呼び出すためにn番目の一致を探していることを正規表現に指定する方法はありますか?

ベストアンサー1

少なくともGNU sedでは、次のようなことができると思います。

sed -e '0,/pattern/ s//replacement1/' -e '0,/pattern/ s//replacement2/' file

たとえば、与えられたファイル

abc
def
abc
ghi
abc
jkl

それから

$ sed -e '0,/abc/ s//XYZ/' -e '0,/abc/ s//UVW/' file
XYZ
def
UVW
ghi
abc
jkl

おすすめ記事