![从文本文件中删除所有包含反斜杠的行](https://linux22.com/image/994165/%E4%BB%8E%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E4%B8%AD%E5%88%A0%E9%99%A4%E6%89%80%E6%9C%89%E5%8C%85%E5%90%AB%E5%8F%8D%E6%96%9C%E6%9D%A0%E7%9A%84%E8%A1%8C.png)
我有一个包含如下内容的文件:
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