合并多个CSV文件的单列时如何忽略标题?

时间:2017-05-10 16:40:32

标签: bash csv unix

我需要合并多个CSV文件中的单个列,同时忽略标题。

文件1:

id,backer_uid,fname,lname
123,uj2uj2,JOHN,SMITH

文件2:

id,backer_uid,fname,lname
124,uj2uh3,BRIAN,DOOLEY

输出:

JOHN
BRIAN

目前,我正在使用:

/*Merge 3rd column from all csv files*/

awk -F "\"*,\"*" '{print $3}’ *.csv >merged.csv

但是如何忽略标题?

3 个答案:

答案 0 :(得分:2)

你可以通过在FNR(每个文件的记录号)上添加一个条件,使用awk,几乎就像你已经完成的那样:

awk -F, 'FNR > 1 {print $3}' *.csv > merged.csv

答案 1 :(得分:1)

使用tailcut

tail -q -n +2 *.csv | cut -f3 -d, > merged.csv
  • tail -n +2打印从第2行开始的所有文件行
  • -q禁止打印文件名
  • cut -f3 -d,提取第三个字段,将,视为分隔符

答案 2 :(得分:1)

尝试:如果您只需要阅读2个文件。

awk -F, 'FNR>1{print $(NF-1)}' file[12]

这里我将字段分隔符设置为逗号,然后检查行号是否大于1,然后打印第二个字段。这里要注意的是文件[12]只会读取名为file1和file2的文件,如果你有多个文件则使用文件*。