如何使用awk基于Ranking列为data.csv新增Experience分类列
原命令问题
- 分隔符配置错误:参数
-F,指定逗号为字段分隔符,但当前data.csv是多空格分隔格式,并非逗号分隔,导致awk无法正确读取Ranking列的数值,所有判断逻辑失效 - 输出未处理格式对齐,直接追加字符串会造成列错位,表头追加逻辑也因分隔符错误无法正常运行
正确实现命令
awk ' BEGIN{OFS="\t"} NR==1{print $1,"Total Spent","Experience";next} { if($1>=8) tag="Very satisfied" else if($1>=6) tag="Satisfied" else if($1>=5) tag="Neutral" else if($1>=3) tag="Bad" else tag="Horrible" print $1,$2,tag }' data.csv | column -t -s $'\t'
命令说明
BEGIN{OFS="\t"}:设置awk输出的字段分隔符为制表符,避免列名中的空格被错误识别为列边界- 第一行输出标准三列表头,和预期结果的表头完全一致
- 数据行按评分从高到低匹配对应体验标签,高优先级条件命中后自动跳过后续判断,无需重复写区间上限,逻辑简洁无冗余
- 最后通过
column -t -s $'\t'指定按制表符拆分列并自动对齐,输出格式和预期结果完全匹配
内容的提问来源于stack exchange,提问作者ed14
相关产品推荐
相关产品推荐

