【问题标题】:Display output in the form of columnName = columnValue from a CSV file using Shell Script or awk使用 Shell 脚本或 awk 从 CSV 文件中以 columnName = columnValue 的形式显示输出
【发布时间】: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 非常感谢!这正是我所需要的。

标签: bash shell awk


【解决方案1】:
awk -F, 'NR==1{split($0,h);next} {for (i=1;i<=NF;i++) print "Value of", h[i], "=", $i}' file

【讨论】:

    最近更新 更多