You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用awk提取CSV中指定属性的姓名与对应值

用awk单命令提取CSV中指定属性的人员信息

场景1:属性与值为单独列(格式示例:姓名,属性1,值1,属性2,值2)

假设你的CSV文件结构如下:

张三,height,180,weight,70
李四,weight,65
王五,height,175,age,30

使用以下awk命令提取包含height属性的记录,输出姓名,属性,值格式:

awk -F ',' -v target="height" '{for(i=2;i<=NF;i+=2){if($i==target){print $1","$i","$(i+1)}}}' your_file.csv

命令说明:

  • -F ',':设置CSV分隔符为逗号
  • -v target="height":定义要匹配的目标属性,可直接修改为其他属性(如weight)
  • 循环遍历从第2列开始的字段(步长为2,对应属性-值对),匹配到目标属性时,输出姓名、属性、对应值

如果需要自定义输出格式(如姓名: 张三, 属性: height, 值: 180),修改print为printf即可:

awk -F ',' -v target="height" '{for(i=2;i<=NF;i+=2){if($i==target){printf "姓名: %s, 属性: %s, 值: %s\n", $1, $i, $(i+1)}}}' your_file.csv

场景2:属性与值在同一列(格式示例:姓名,属性1=值1,属性2=值2)

若CSV结构是属性和值用等号绑定在同一列,例如:

张三,height=180,weight=70
李四,weight=65
王五,height=175,age=30

使用以下命令提取目标属性:

awk -F ',' -v target="height" '{for(i=2;i<=NF;i++){split($i, arr, "="); if(arr[1]==target){print $1","arr[1]","arr[2]}}}' your_file.csv

命令说明:

  • split($i, arr, "="):将当前字段按等号拆分为数组arr,arr[1]为属性名,arr[2]为对应值
  • 遍历所有非姓名字段,匹配到目标属性后输出指定内容

内容的提问来源于stack exchange,提问作者HJT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 19:50:44