./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
find
grep
以下では、まずすべてのファイルを見つけてから渡して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
拡張正規表現を使用します。