置換する前に sed 置換を処理する方法

置換する前に sed 置換を処理する方法

次のテキストがあるとしますMy name is #1#!

#1#間に何があるかによって異なるものに変えたいです#。たとえば、次のようになります。

if [ $thing_between_hash -eq 1 ]; then
  subs=John
else
  subs=Mary
fi

その後、出力は次のようになります。

My name is John!

一度だけ交換できますかsed?どのように?

ベストアンサー1

次の機能をサポートするsedを使用してください-r

sed -r -e 's/#1#/John/g; s/#[^#]+#/Mary/g' <<< 'My name is #1#, not #5#!'

それ以外の場合:

sed    -e 's/#1#/John/g; s/#[^#][^#]*#/Mary/g' <<< 'My name is #1#, not #5#!'

おすすめ記事