使用unix中的键查找条目的索引

时间:2016-02-29 10:38:17

标签: csv unix awk grep

我有一个字符串key="Value1"

然后我有一个file.csv,我想用密钥搜索。使用密钥我想在csv文件中找到行条目,然后在标识的行中找到“Value2”的列位置。

我尝试使用:

$ awk 's=index($0,$key) { print "line=" NR }' file.csv

但这似乎不起作用,因为它基本上标识了所有行:P

我认为grep可能会有效,但不确定如何有效地实现它

输入:file.csv

Value, Object, Position, Value!
Value1, Object1, Position, Value2

期望的输出:

row 2 col 4

其中col号存储为变量x,其中例如x = 4

1 个答案:

答案 0 :(得分:1)

如果我理解正确,我认为你可以使用这样的东西:

awk -F', *' -v key="Value1" -v value="Value2" '$1 == key { 
    for (i = 2; i <= NF; ++i) if ($i == value) { print i; exit } }' file

这将两个值传递给awk脚本:键,用于确定正确的行和要搜索的值。当第一个字段与键匹配时,循环将遍历其余字段并输出与该值匹配的第一个字段。找到一个后,脚本将退出。

要将值分配给shell变量x,请使用x=$(awk ...)