sedにxargs入力を含む複数のコマンド

sedにxargs入力を含む複数のコマンド

./123bar/foo.txt以下を含むファイルがあります。

pro := text
ver := 1.0
rev := 2

2つの環境変数:

var =2.1
var2=3

verすべてをandに変更したいです$var。予想出力:rev$var2

pro := text
ver := 2.1
rev := 3

findgrep以下では、まずすべてのファイルを見つけてから渡してsed結果を取得しようとしています。以下は私が実行しているコマンドです。

find . -name 'foo.txt' | grep -P "\/[0-9]{3}bar" | xargs -I{} sed -E "s/:= *[0-9]+\.[0-9]+ *$/:= $var/g" -E "s/:= [0-9]+ *$/:= $var2/g" {}

動作せずにエラーが発生します。

sed: can't read s/:= [0-9]+ *$/:= 3/g: No such file or directory
pro := text
ver := 2.1
rev := 45

どうすれば解決できますか?よりクリーンでシンプルなソリューションも大歓迎です。

ベストアンサー1

sedで複数の式を使用するオプションは-e次のとおりです-E

sed -e "s/:= *[0-9]+\.[0-9]+ *$/:= $var/g" -e "s/:= [0-9]+ *$/:= $var2/g"

~から手動(GNUが提供すると仮定ブランド):

'-e SCRIPT'
'--expression=SCRIPT'
入力を処理するときに実行するコマンドセットに SCRIPT のコマンドを追加します。

-E拡張正規表現を使用します。

おすすめ記事