我有一个文本文件:
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,仅此而已?
答案 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