Answers:
你需要超过cat
命令,描述在这里:
假设你有3 CSV-文件:file1.csv
,file2.csv
,和file3.csv
,并希望他们加入到bigfile.csv
你的头始终是(只)的第一行,然后使用
任一个(保留第一个文件“ file1.csv”的头):
cat file1.csv <(tail +2 file2.csv) <(tail +2 file3.csv) > bigfile.csv
或(从名称以“ file”开头的所有文件中删除标题):
awk 'FNR > 1' file*.csv > bigfile.csv
tail -n+2
,tail +2
是行不通的
我同意最佳答案,但建议在以下情况下进行扩展(因为我无法评论):
如果您希望输出文件包含标头(一次),则正确的脚本为:
awk '(NR == 1) || (FNR > 1)' file*.csv > bigfile.csv
FNR表示单个文件中已处理记录的数量。NR在全局范围内表示它,因此第一行被接受,其余行则像以前一样被忽略。
如果您有大量文件,则更简单的解决方案:
awk 'FNR > 1' *.csv > merged.csv
只需返回以编辑大文件并重新添加标题即可。
awk 'FNR > 1' file*.csv > bigfile.csv
?不是!
file
cat <(cat file1.csv) <(tail +2 file2.csv) <(tail +2 file3.csv) > bigfile.csv