如何查找具有特定数字的行

如何查找具有特定数字的行

所以我有这个文件,我只想查找包含特定短语后跟非零数字的行。我正在考虑使用 grep,但我不确定如何格式化它以忽略零。一行会是这样的:

2009-12-05 : Reindexing 100: [result]
2009-12-07 : Reindexing 0: [result]

我只想要第一行。

先感谢您。

答案1

Reindexing要获取后跟非零数字的短语的第一个匹配项,请使用 (GNU grep):

grep -m1 'Reindexing [1-9]' < input

答案2

如果您确实指的是任何“非零数字”,即想要处理:

  • 负数,
  • 分数 - 包括 0 < n < 1(以“0”开头)

你需要比 grep 更强大的东西。例如:

echo '2009-12-05 : Reindexing -0.7: [result]' | perl -ne 'print if /Reindexing -?(\d+(\.\d+)?+)(?!\w)/ and $1!=0'

此解决方案还将排除像“100abc”这样的字符串,它们不是数字:“(?!\w)”部分是负向前瞻,意味着“后面不跟单词字符”。改变最后的条件,您可以进行任何您喜欢的过滤。

相关内容