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

如何用awk调整数据集第二列大小写?现有命令无法生效

问题分析与解决方案

问题描述

尝试用awk处理emp.txt数据集,将第二列(M_NAME)转为首字母大写、其余字母小写的格式,但执行命令后未达到预期效果。

执行的错误命令

awk 'BEGIN{FS=","}NR>1{tolower(substr($2,2))} {print $0}' emp.txt

原始数据

M_ID,M_NAME,DEPT_ID,START_DATE,END_DATE,Salary 
M001,Richa,D001,27-Jan-07,27-Feb-07,150000 
M002,Nitin,D002,16-Feb-07,16-May-07,40000 
M003,AJIT,D003,8-Mar-07,8-Sep-07,70000 
M004,SHARVARI,D004,28-Mar-07,28-Mar-08,120000 
M005,ADITYA,D002,27-Apr-07,27-Jul-07,40000 
M006,Rohan,D004,12-Apr-07,12-Apr-08,130000 
M007,Usha,D003,17-Apr-07,17-Oct-07,70000 
M008,Anjali,D002,2-Apr-07,2-Jul-07,40000 
M009,Yash,D006,11-Apr-07,11-Jul-07,85000 
M010,Nalini,D007,15-Apr-07,15-Oct-07,9999

预期输出

M_ID,M_NAME,DEPT_ID,START_DATE,END_DATE,Salary 
M001,Richa,D001,27-Jan-07,27-Feb-07,150000 
M002,Nitin,D002,16-Feb-07,16-May-07,40000 
M003,Ajit,D003,8-Mar-07,8-Sep-07,70000 
M004,Sharvari,D004,28-Mar-07,28-Mar-08,120000 
M005,Aditya,D002,27-Apr-07,27-Jul-07,40000 
M006,Rohan,D004,12-Apr-07,12-Apr-08,130000 
M007,Usha,D003,17-Apr-07,17-Oct-07,70000 
M008,Anjali,D002,2-Apr-07,2-Jul-07,40000 
M009,Yash,D006,11-Apr-07,11-Jul-07,85000 
M010,Nalini,D007,15-Apr-07,15-Oct-07,9999

错误原因

原命令仅计算了转换后的子串,但未将结果赋值回第二列,导致原数据没有任何修改,输出与原始内容一致。

修正后的命令

awk 'BEGIN{FS=OFS=","} NR>1 { $2 = toupper(substr($2,1,1)) tolower(substr($2,2)) } { print $0 }' emp.txt

命令解释

  • FS=OFS=",":同时设置输入和输出字段分隔符为逗号,保证输出格式与输入一致。
  • toupper(substr($2,1,1)):提取第二列首字符并转为大写。
  • tolower(substr($2,2)):提取第二列从第2个字符开始的所有内容并转为小写。
  • 将两部分拼接后重新赋值给$2,修改后的字段会同步到最终输出中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:15:51