web-dev-qa-db-ja.com

テキストファイルからバックスラッシュを含むすべての行を削除します

次のような内容のファイルがあります。

Apple
b\all
cat
\34
Egg

バックスラッシュを含むすべての行を削除したい。使ってみた

sed '/\/d' pdataf.txt

しかし、うまくいきませんでした。何を試せばいいですか?

8
user110327

バックスラッシュをエスケープするだけです(エスケープをエスケープしてください!)

$ sed '/\\/d' pdataf.txt
Apple
cat
Egg
11
Zanna

grep\を含まないすべての行を印刷:

grep -v '\\' pdataf.txt

同様にawk

awk '!/\\/' pdataf.txt
9
heemayl

円記号を置き換えるには、円記号(エスケープ文字)をエスケープする必要があります。 sedのバージョンがサポートしている場合、-i(in-place)オプションは、中間ファイルを提供することなくファイルの編集を行います。また、-iオプションを使用する場合、(推奨!)バックアップファイル拡張子を受け入れることに注意してください。ただし、拡張子を指定しない場合は、sedコマンドの前に-eを付けて、使用していないことをsedに通知すると便利ですバックアップファイルの拡張子。

すべてを一緒に入れて:

# Run sed to remove lines with backslash in them

$ sed -i -e '/\\/d' pdataf.txt

# Cat your file to confirm edits

$ cat pdataf.txt
Apple
cat
Egg
2
m0j0hn