查找带有数字的行

查找带有数字的行

如何找到包含数值的行?

即我想找到一些包含数字的行。我正在使用 Ubuntu 16.04。我可以用命令来做到这一点grep吗?

答案1

是的你可以!

grep '[0-9]' file

替换file为您的文件的名称...

答案2

这里有几个选择,全部使用以下测试输入文件:

foo
bar 12
baz

所有这些命令将打印包含至少一个数字的任何输入行:

$ grep '[0-9]' file
bar 12
$ grep -P '\d' file
bar 12
$ awk '/[0-9]/' file
bar 12
$ sed -n '/[0-9]/p' file
bar 12
$ perl -ne 'print if /\d/' file
bar 12
$ while read line; do [[ $line =~ [0-9] ]] && printf '%s\n' "$line"; done < file
bar 12
$ while read line; do [[ $line = *[0-9]* ]] && printf '%s\n' "$line"; done < file
bar 12

答案3

还没有人提到python,所以这里是:

bash-4.3$ cat file
foo
foo1bar
barfoo foo bar
barfoo 123 foobar 321
bash-4.3$ python -c 'import re,sys;matched=[line.strip() for line in sys.stdin if re.findall("[0-9]",line)];print "\n".join(matched)' < file 
foo1bar
barfoo 123 foobar 321

其工作原理的基本思想是,我们将文件作为 stdin 输入,python 代码读取 stdin 中的所有行并使用re.findall()regex 模块中的函数来匹配行,最后打印出这些行的列表。有点冗长,但有效。有些部分可以大大缩短,例如:

python -c 'import re,sys;print "\n".join([l.strip() for l in sys.stdin if re.findall("[0-9]",l)])' < file 

附注:这是 python2。使用print带括号的函数使其适应 python3

相关内容