私は、いくつかのファイルでglobal
文字列置換を行う小さなスクリプトを用意しています。影響を受ける行だけが変更されるように、これはsed
で行う必要があります。スクリプト内の変数でsedが期待どおりに動作しない
準備:
#!/bin/sh
find="Mücke Motorsport"
replace="Mücke Motorsport Racing Team"
file="/Users/meyer/Dropbox/Dev/App Framework iOS/dev/myfile.txt"
これは、スクリプト内の私の問題の行です:
sed -i s/"$find"/"$replace"/g "$file"
は(sed: 1: "/Users/meyer/Dropb ...": invalid command code o
)が動作しません。次に試してください:
sed -i 's/'"$find"'/'"$replace"'/g' "$file"
(sed: 1: "/Users/meyer/Dropb ...": invalid command code o
)が動作しません。次に試してください:
sed -i "s/$find/$replace/g" "$file"
は機能しません(sed: 1: "/Users/meyer/Dropb ...": invalid command code o
)。次に試してください:
sed -i s/$find/$replace/g "$file"
(sed: 1: "Motorsport/Mücke": invalid command code M
)が動作しません。 ...私はこの作業を取得する方法を知っている
escaped_ find =$(printf '%s\n' "$find" | sed 's:[][\/.^$*]:\\&:g')
escaped_ replace =$(printf '%s\n' "$replace" | sed 's:[\/&]:\\&:g;$!s/$/\\/')
しかし、変数を置き換えるdoes't作業の利用ドント:(
どのOSをお使いですか? –
これはエンコードの問題でしょうか?この記事を参照してください:https://stackoverflow.com/questions/67410/why-does-sed-fail-with-international-characters-and-how-to-fix 'sed -i" s/$ find/$ replace/g "" $ file "'は私のために働きます。 – piarston
@YuriyZhigulskiy私はMac OS(10.11 El Capitan) –