【发布时间】:2013-02-13 12:38:13
【问题描述】:
如何找到格式为 0.xzy 的数字,其中 xzy 是数字,x 是 8-9,并在每个匹配项(包括)前写 5 行到 outputfile.txt。
【问题讨论】:
如何找到格式为 0.xzy 的数字,其中 xzy 是数字,x 是 8-9,并在每个匹配项(包括)前写 5 行到 outputfile.txt。
【问题讨论】:
查找格式为0.xzy的数字(使用字边界不强制整行匹配)并打印匹配-B5之前的第5行并将输出重定向到outfile:
$ grep -B5 -Ew '0\.[0-9]{3}' file > outfile
# fix x to 8 or 9
$ grep -B5 -Ew '0\.[8-9][0-9]{2}' file > outfile
注意:. 需要转义以表示文字句点,否则 01234 将匹配。你会发现man grep 很有帮助!
【讨论】:
以0.xzy 格式查找数字(xzy 是数字)
grep "^0.[0-9][0-9][0-9]$" file
查找 x 为 8-9 的情况
grep "^0.[89][0-9][0-9]$" file
【讨论】:
. 以避免过度匹配,并且 OP 没有声明整行匹配。 -[ABC] 标志也用于上下文匹配。
grep ^0\.[0-9][0-9][0-9]$ 会起作用吗?
01234 更好但你也不会匹配 x: 0.923 因为锚点 ^,$。