使用grep寻找完全匹配

时间:2013-12-26 10:00:05

标签: bash

假设我有这样的文件:

tst.txt

fName1 lName1-a  222
fname1 lName1-b 22
fName1 lName1 2

我想使用此命令仅为“fName1 lName1”获取第3列:

var=`grep -i -w "fName1 lName1" tst.txt`

然而,这会以“fName1 lName1”开头的每行返回,我该如何查找完全匹配?

3 个答案:

答案 0 :(得分:2)

你走了:

#!/bin/bash

var=$(grep -Po '(?<=fName1 lName1 ).+' tst.txt)
echo $var

诀窍是使用o命令的grep选项。 P选项告诉解释器在解析模式时使用与Perl兼容的正则表达式语法。

答案 1 :(得分:1)

var=$(grep "fName1 lName1 " tst.txt |cut -d ' ' -f 3)

答案 2 :(得分:0)

你可以尝试这种方法:
grep -i -E "^fName1 lName1\s" tst.txt | cut -f3,3- -d ' '
但是,您必须确保该行以fName1开头,并且您在lName1之后有空格。