awk返回带子串的行

时间:2014-03-26 19:27:52

标签: awk

我有一个文本文件:

string 323
blah 23
string_substring 33

当我的bash变量$ f ='string'时,我想仅使用awk返回第一行中的数字

awk -F" " -v x=$f '$1 ~ x {print $2}' file.txt

即使我使用“”的字段分隔符,它也返回第一行和第三行......如何让它只匹配第一行?有没有办法说$ 1 = x,即第一个参数恰好是x,仅此而已?

2 个答案:

答案 0 :(得分:3)

当你说:

$1 ~ x

指定第一个字段匹配 x。如果你想要它是平等的,请这样说:

$1 == x

因此,请说:

awk -F" " -v x=$f '$1 == x {print $2}' file.txt

答案 1 :(得分:2)

如果string是第一列,则将其用作条件:

awk '$1=="string" {print $2}' file

或来自shell变量

var="string"
awk -v f=$var '$1==f {print $2}' file