如何从CSV文件中获取每一行的第一列?

Jun*_*ter 31 csv bash shell awk text-parsing

如何获取输入CSV文件中每行的第一列并输出到新文件?我在想awk但是不确定如何使用.

Lev*_*von 62

试试这个:

 awk -F"," '{print $1}' data.txt
Run Code Online (Sandbox Code Playgroud)

它会data.txt根据,字符(如指定的那样-F)将文件中的每个输入行拆分为不同的字段,并将第一个字段(列)打印到stdout.

  • @Sorpigal ..如果你使用`cut`代替`awk` :-),我不会低估你*你这两种工具都没问题.FWIW,OP在他们的帖子中提到了awk,我赞成了一个"竞争"的"剪切"解决方案(如果你发布了它可能是你的).这不是一种宗教,这是一项需要完成的小任务,我选择了其中一种工具来完成它. (3认同)
  • @downvoter ..没有***解释的downvote***没有帮助*任何人*(OP,SO或我).这是符合OP规定要求的功能性解决方案.我很乐意纠正错误或改进我的答案,但这需要建设性的反馈. (2认同)
  • 我没有投反对票,但我也不会投赞成票:这是在“cut”可以做的地方使用“awk”。它带有一刀切的味道。使用“perl”或“sed”也同样糟糕。没有错,只是不太对。现在,如果您使用正确处理诸如“last,first”,field2,field3`之类的 csv 文件的“awk”脚本进行回答,那就更合适了。 (2认同)

小智 55

可以做到:

$ cut -d, -f1 data.txt
Run Code Online (Sandbox Code Playgroud)


Nyk*_*kin 9

echo "a,b,c" | cut -d',' -f1 > newFile
Run Code Online (Sandbox Code Playgroud)

  • 如果shell可以处理未转义的分隔符,则不需要在分隔符周围. (3认同)

Deb*_*tya 7

输入

a,12,34
b,23,56
Run Code Online (Sandbox Code Playgroud)

awk -F "," '{print $1}' Input
Run Code Online (Sandbox Code Playgroud)

格式

awk -F <delimiter> '{print $<column_number>}' Input
Run Code Online (Sandbox Code Playgroud)