awk 返回带有子字符串的行
Posted
技术标签:
【中文标题】awk 返回带有子字符串的行【英文标题】:awk returns lines with substring 【发布时间】:2014-05-05 10:57:31 【问题描述】:我有一个文本文件:
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,仅此而已?
【问题讨论】:
【参考方案1】:如果字符串是第一列,则使用它作为条件:
awk '$1=="string" print $2' file
或者从一个shell变量,
var="string"
awk -v f=$var '$1==f print $2' file
【讨论】:
【参考方案2】:当你说:
$1 ~ x
您指定第一个字段匹配 x
。如果您希望它是平等的,请这样说:
$1 == x
这样说:
awk -F" " -v x=$f '$1 == x print $2' file.txt
【讨论】:
以上是关于awk 返回带有子字符串的行的主要内容,如果未能解决你的问题,请参考以下文章