所以我有这个文件,我只想查找包含特定短语后跟非零数字的行。我正在考虑使用 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)”部分是负向前瞻,意味着“后面不跟单词字符”。改变最后的条件,您可以进行任何您喜欢的过滤。