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

时间:2012-07-26 11:47:57

标签: bash shell csv awk text-parsing

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

6 个答案:

答案 0 :(得分:57)

试试这个:

 awk -F"," '{print $1}' data.txt

它会将文件data.txt中的每个输入行拆分为基于,字符的不同字段(使用-F指定)并将第一个字段(列)打印到stdout。

答案 1 :(得分:52)

可以做到:

$ cut -d, -f1 data.txt

答案 2 :(得分:8)

echo "a,b,c" | cut -d',' -f1 > newFile

答案 3 :(得分:6)

输入

a,12,34
b,23,56

代码

awk -F "," '{print $1}' Input

<强>格式

awk -F <delimiter> '{print $<column_number>}' Input

答案 4 :(得分:3)

这可以使用grep

来实现
$ grep -o '^[^,]\+' file.csv

答案 5 :(得分:0)

使用Perl:

perl -F, -lane 'print $F[0]' data.txt > data2.txt

使用以下命令行选项:

  • -n循环输入文件的每一行
  • -l在处理之前删除换行符,然后将其添加回来
  • -a autosplit模式 - 将输入行拆分为@F数组。默认为在空格上拆分。
  • -e执行perl代码
  • -F autosplit修饰符,在这种情况下会在,
  • 上拆分

如果您想就地修改原始文件,请使用-i选项:

perl -i -lane 'print $F[0]' data.txt

如果您想就地修改原始文件并制作备份副本:

perl -i.bak -lane 'print $F[0]' data.txt

如果您的数据是以空格分隔而不是以逗号分隔:

perl -lane 'print $F[0]' data.txt