【发布时间】:2013-03-27 05:15:36
【问题描述】:
如何删除文本文件中不以字符#、& 或* 开头的所有行?我正在寻找使用sed 或grep 的解决方案。
【问题讨论】:
如何删除文本文件中不以字符#、& 或* 开头的所有行?我正在寻找使用sed 或grep 的解决方案。
【问题讨论】:
sed -n '/^[#&*].*/p' input.txt > output.txt
这应该可以。
sed -ni '/^[#&*].*/p' input.txt
这个会直接编辑输入文件,小心+
【讨论】:
删除行:
与grep
来自http://lowfatlinux.com/linux-grep.html:
grep 命令从一个文件(或一堆文件)中选择并打印与某个模式匹配的行。
我认为你可以这样做:
grep -v '^[\#\&\*]' yourFile.txt > output.txt
您也可以使用sed 做同样的事情(检查http://lowfatlinux.com/linux-sed.html):
sed '^[\#\&\*]/d' yourFile.txt > output.txt
由你决定
过滤线:
我的错误,我知道你想删除这些行。但如果你想“删除”所有其他行(或过滤以指定字符开头的行),那么grep 是要走的路:
grep '^[\#\&\*]' yourFile.txt > output.txt
【讨论】:
grep -v '^#' yourFile > output。您可能需要转义字符:grep -v '^\#' yourFile > output
egrep '^(&|#|\*)' input.txt > output.txt
【讨论】:
[&#*] 比您显示的替代更有效。如果您的 egrep 使用 DFA,则可能无关紧要。