在文件中有重复的行,如
value for = 0.658
value b = 0.431
value ty = 0.001
该行以value
开头。我只想在value for
行(0.658)中查找数字,并且前面总是有=
。问题是=
也位于文件的其他行之前。我知道如何为两个单词value
和for
中的一行说话,但不知道如何仅仅使用这个数字?
答案 0 :(得分:2)
你可以试试这个:
grep -oP 'value for = \K.*' filename
输出:
0.658
请参阅:http://www.charlestonsw.com/perl-regular-expression-k-trick/
答案 1 :(得分:0)
默认情况下,如果您匹配,grep
将打印整行(请参阅' man grep')。
-o选项将仅输出与regex匹配的部分行。因此,要输出带有数字的行上的所有数字,我们可以这样做:
grep -Eo '[0-9]+' filename
限制为具有'值的行'和一个数字我们可以使用Perl regex( - P)并在我们的表达式中使用\ K来丢弃匹配的第一部分:
grep -Po 'value for \= \K[0-9]+' filename
答案 2 :(得分:0)
grep "value for" YOURFILE | grep -Po '([\[0-9\]\.]+)'
第一个grep确保只有必要的行传递给第二个,只输出匹配的部分(由于-o
开关)。
答案 3 :(得分:0)