Mal*_*lgi 2 linux bash concatenation
我有大量名为 0.file.csv、..、1000.file.csv 的文件。我需要连接文件,只保留第一个文件的标头,并删除其余文件的标头。我想出的解决方案是:
sudo awk 'FNR==1 && NR!=1{next;}{print}' {0..1000}.file.csv > file.csv
Run Code Online (Sandbox Code Playgroud)
但是,如果某些文件只有标头,则此解决方案不起作用。
示例输入是:
0.file.csv
person_id, dob, year, subject, degree
0,1984/12/01,2014,math,ms
1.file.csv
person_id, dob, year, subject, degree
2.file.csv
person_id, dob, year, subject, degree
200,1990/03/12,2015,physics,bs
201,1991/04/18,2015,math,ms
Run Code Online (Sandbox Code Playgroud)
输出应该是:
person_id, dob, year, subject, degree
0,1984/12/01,2014,math,ms
200,1990/03/12,2015,physics,bs
201,1991/04/18,2015,math,ms
Run Code Online (Sandbox Code Playgroud)
一个更简单的awk命令:
awk 'FNR>1 || NR==1' {0..1000}.file.csv
Run Code Online (Sandbox Code Playgroud)
但这与您原来的功能完全相同(但不依赖next)。它产生了预期的输出,但我不明白为什么你的原始输出没有。(我尝试的时候确实如此。)