【发布时间】:2026-02-07 19:30:04
【问题描述】:
我有一个 CSV 文件,如下所示:
US,China,South Africa
1000,0,129
我正在寻找的输出:
Value of US = 1000
Value of China = 0
Value of South Africa = 129
我的 CSV 文件已被过滤,除列标题行外仅包含一行。上述语句对 csv 文件中的所有列重复。
一些附加信息:
首先,csv 文件中的列名和值用逗号分隔。文件是这样生成的,我没有修改分隔符。
其次,我所有的列名都是字符串(中间可能包含空格),而我的所有值都是正数(整数)。
最后,我还交叉检查了我的 csvfile,每一列都有对应的值(即没有空值)。
到目前为止,我已经尝试了以下方法:
csvcut -n filename.csv #To try and get the column names to iterate through them
但是,上面的命令返回如下输出:
1: US
2: China
3: South Africa
另外,给定列名作为我的 shell 脚本的输入,我已经写了
echo "Value of $1 = `csvcut -c $1 filename.csv`"
当以sh my_script.sh US 运行时,
我得到的输出是
Value of US = 1000
我只是不知道如何在所有列中执行此操作。
编辑
问题结束后,在 cmets 中找到了正确的解决方案。
感谢 Ed Morton。
对于遇到此问题的其他人,解决方案如下:
awk -F, 'NR==1{split($0,h);next} {for (i=1;i<=NF;i++) print "Value of", h[i], "=", $i}' file
【问题讨论】:
-
由于它已关闭,我无法发布答案,但您应该努力解决您的问题,所以:
awk -F, 'NR==1{split($0,h);next} {for (i=1;i<=NF;i++) print "Value of", h[i], "=", $i}' file -
@EdMorton 非常感谢!这正是我所需要的。