ファイルから文字列を削除したい。この文字列はユーザーによって提供されます。私は動作しなかった次のコマンドを試しました。bashのファイルから文字列を削除する方法
read -r input
sed -i '/"$input"/d' xyz.txt
私は二重引用符( "")も使用しませんでした。しかし、それは動作しませんでした。
あなたは私を助けてくれますか?
ファイルから文字列を削除したい。この文字列はユーザーによって提供されます。私は動作しなかった次のコマンドを試しました。bashのファイルから文字列を削除する方法
read -r input
sed -i '/"$input"/d' xyz.txt
私は二重引用符( "")も使用しませんでした。しかし、それは動作しませんでした。
あなたは私を助けてくれますか?
あなたは使用することができます。
sed -i "/$input/d" xyz.txt
しかしinput
は任意の正規表現の特殊文字が含まれていないことを確認してください。 index
機能付き
awk
が原因非正規表現に、より安全かもしれません:
awk -v input="$input" '!index($0, input)' xyz.txt > $$.temp && mv $$.temp xyz.txt
ありがとうございます。出来た –
問題は、単一引用符の内側に入れたときに変数が展開されないことです。
ですから、二重引用符を使用する必要があります。
は、元のファイルはxyz.txt.bak
として保持され、変更されたファイルはxyz.txt
になります。
バックアップをしたくない場合は、次の
sed -i "/$input/ d" xyz.txt
あなたは、文字列を削除したいと述べたが、あなたが使用したコマンドは、文字列が入っている行全体を削除します。これは、何よりも異なる結果です。あなたは表現しました。どちらが望ましいですか? – SaintHax
この場合、行全体は文字列 –