我有一个字符串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
答案 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 ...)
。