如何通过Linux CLI提取CSV文件指定列并忽略其余列
解决CSV提取指定列的问题
嘿,这个问题我太懂啦!你之前的命令没达到预期,核心原因是awk默认以空格作为字段分隔符,但你的CSV数据是用逗号分隔的,所以awk根本没识别对每一列的位置,自然提取不到正确内容,更别说你还需要第9列啦~
给你两种简单好用的解决方案:
方法一:用awk指定逗号分隔符
直接在awk里加上-F ','参数告诉它用逗号分割字段,然后打印你需要的第1、2、3、4、5、9列,记得用逗号把这些列连起来,保持CSV格式:
awk -F ',' '{print $1","$2","$3","$4","$5","$9}' file.csv > newfile
测试你给的示例数据,输出结果会是:
123,B006195,T,O,INDIVIDUAL,NEW 12,C06195,T,O,INDIVIDUAL,NEW 12345,B00619,T,O,IND,OLD
方法二:用cut命令更简洁
如果只是提取列,cut命令可能更直观,-d ','指定分隔符,-f 1-5,9表示提取第1到5列,再加第9列:
cut -d ',' -f 1-5,9 file.csv > newfile
这个命令的输出和上面awk的结果完全一致,操作起来更省事~
内容的提问来源于stack exchange,提问作者Deepak Sharma
相关产品推荐
相关产品推荐

