繁体   English   中英

删除与sed模式不匹配的所有行

[英]deleting all lines that don't match a pattern with sed

我有一个文件tmpFile包含:

wqf____32qwfe
123412
qqwef123414
12039421
...

tmpFile中,行中仅包含数字,或者行中可以包含任何类型的字符。

我想保留仅包含整数的行。 我该如何实现?

虽然你可以为此使用SED的工作是与G lobally搜索A R egularé上的表达和P RINT结果如此猜测的发明是为了做正是这个工作什么工具?

要使用GNU grep打印仅包含数字的行,请执行以下操作:

grep -E '^[0-9]+$' file

或任何grep:

grep '^[0-9][0-9]*$' file

要打印包含非数字的行:

grep '[^0-9]' file

要打印不包含数字的行(包括空行):

grep -v '[0-9]' file

要打印不包含数字的行(包括空行):

grep -v '[^0-9]' file
sed '/^[0-9]\+$/!d' tmpFile

! 颠倒逻辑。 请注意, \\+不是POSIX兼容版本sed (例如BSD或Mac OS X sed )的基本功能的一部分。

sed '/^[0-9]\{1,\}$/!d' tmpFile

查找一个或多个数字将起作用。

还有其他方法可以达到相同的总体效果,尤其是在这种有限的情况下。 如果您需要在更大的脚本中执行此操作,则这是对您的要求的直接答案。

您可以取消打印图案空间,仅打印与数字图案匹配的行,例如:

$ sed -n '/^[0-9]\+$/p' file
123412
12039421

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM