假设以下示例csv输入
SYMBOL,JAN-11,FEB-11,MAR-11
DEF,20,25,20 HIG,50,50,50
无论如何都要使用行和列来grep特定值 即grep符号DEF和FEB-11应返回值25
行方式grep是微不足道的,但是我对列明智的grep有问题。 任何帮助将不胜感激。
答案 0 :(得分:4)
正如@Ignacio Vazquez-Abrams所说,awk
是一个更好的工具。请尝试以下脚本:
#!/bin/awk -f
# usage: csvgrep row column [file]
BEGIN {
FS = "[ \t]*,[ \t]"
row = ARGV[1]
col = ARGV[2]
ARGV[1] = ARGV[2] = ""
# read header
getline
for (i=1; i<=NF; i++)
if ($i == col) {
col = i
break
}
}
($1 == row) { print $col }
您可能想要添加输入验证。 awk
可能位于您系统的/usr/bin
。