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


8

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

apple
b\all
cat
\34
egg

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

sed '/\/d' pdataf.txt

しかし、それはうまくいきませんでした。何をしようか

回答:


10

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

$ sed '/\\/d' pdataf.txt
apple
cat
egg

8

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

grep -v '\\' pdataf.txt

同様にawk

awk '!/\\/' pdataf.txt

1

バックスラッシュ(エスケープ文字)を置き換えるには、エスケープする必要があります。また、sedのバージョンがそれをサポートしている場合、-i(インプレース)オプションは、中間ファイルを提供しなくても、ファイルを編集します。また、-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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.