我有一个包含如下内容的文件:
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