从文本文件中删除所有包含反斜杠的行

从文本文件中删除所有包含反斜杠的行

我有一个包含如下内容的文件:

apple
b\all
cat
\34
egg

我想删除所有包含反斜杠的行。我尝试使用

sed '/\/d' pdataf.txt

但它不起作用。我应该尝试什么?

答案1

你只需要转义反斜杠(转义转义!)

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

答案2

grep,打印所有不包含以下内容的行\

grep -v '\\' pdataf.txt

相似地awk

awk '!/\\/' pdataf.txt

答案3

您需要转义反斜杠(转义字符)才能替换它。如果您的 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

相关内容