42

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

4

6 回答 6

82

试试这个:

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

它将data.txt根据,字符(用 指定)将文件中的每个输入行拆分为不同的字段,-F并将第一个字段(列)打印到标准输出。

于 2012-07-26T11:49:42.690 回答
67

可以做到:

$ cut -d, -f1 data.txt
于 2012-07-26T11:50:22.513 回答
12
echo "a,b,c" | cut -d',' -f1 > newFile
于 2012-07-26T11:50:51.690 回答
7

输入

a,12,34
b,23,56

代码

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

格式

awk -F <delimiter> '{print $<column_number>}' Input
于 2012-07-26T12:01:14.977 回答
3

这可以通过以下方式实现grep

$ grep -o '^[^,]\+' file.csv
于 2015-11-12T13:37:44.170 回答
0

使用 Perl:

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

使用这些命令行选项:

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

如果要就地修改原始文件,请使用以下-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

于 2015-11-12T18:50:39.547 回答