我有一个文件tmpFile
,其中包含:
wqf____32qwfe
123412
qqwef123414
12039421
...
在tmpFile
中,有些行只有数字,或者行可以包含任何类型的字符。
我想保留只包含整数的行。 我怎样才能做到这一点?
答案 0 :(得分:4)
虽然你可以使用sed来做这个,但是 G 的工作是逐步搜索 R egular E xpression和 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
答案 1 :(得分:2)
sed '/^[0-9]\+$/!d' tmpFile
!
反转逻辑。请注意,\+
不是sed
的POSIX兼容版本的基本功能的一部分(例如BSD或Mac OS X sed
)。
sed '/^[0-9]\{1,\}$/!d' tmpFile
这样可以找到一个或多个数字。
还有其他方法可以实现相同的整体效果,尤其是在这种有限的背景下。如果您需要将此作为更大脚本的一部分,这可以直接回答您的要求。
答案 2 :(得分:1)
您可以禁止打印图案空间,只打印与数字图案匹配的行,例如:
$ sed -n '/^[0-9]\+$/p' file
123412
12039421