【发布时间】:2016-05-30 23:47:23
【问题描述】:
我有一个文件tmpFile 包含:
wqf____32qwfe
123412
qqwef123414
12039421
...
在tmpFile 中,有些行只包含数字,或者可以包含任何类型的字符。
我想保留只包含整数的行。 我怎样才能做到这一点?
【问题讨论】:
我有一个文件tmpFile 包含:
wqf____32qwfe
123412
qqwef123414
12039421
...
在tmpFile 中,有些行只包含数字,或者可以包含任何类型的字符。
我想保留只包含整数的行。 我怎样才能做到这一点?
【问题讨论】:
虽然您可以为此使用 sed,但工作是 G局部搜索 R常规 Expression 和 P 看看结果,猜猜我们发明了什么工具来完成这项工作?
使用 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
【讨论】:
grep -E '^[0-9]+$' tmpFile 和 grep '^[0-9][0-9]*$' tmpFile 为我想做的事工作!谢谢
sed '/^[0-9]\+$/!d' tmpFile
! 反转逻辑。请注意,\+ 不是 POSIX 兼容版本的 sed(例如 BSD 或 Mac OS X sed)的基本功能的一部分。
sed '/^[0-9]\{1,\}$/!d' tmpFile
这可以工作,寻找一个或多个数字。
还有其他方法可以达到相同的整体效果,尤其是在这种有限的情况下。如果您需要将此作为更大脚本的一部分,这就是您要求的直接答案。
【讨论】:
/^[0-9][0-9]*$/!d进行归档
您可以抑制打印模式空间,只打印与数字模式匹配的行,例如:
$ sed -n '/^[0-9]\+$/p' file
123412
12039421
【讨论】: