将两个 .csv 文件合并为一个并仅保留一个标头 - 在 bash 中

Cri*_*096 2 unix bash

我在同一目录中有两个具有相同列数的 .csv 文件,我想将它们组合成一个文件,但只保留第一个文件中的一个标题。文件名总是不同的,只有前缀保持不变:

orderline_123456.csv

Order_number,Quantity,Price
100,10,25.3
101,15,30.2

Run Code Online (Sandbox Code Playgroud)
orderline_896524.csv

Order_number,Quantity,Price
102,20,12.33
103,3,3.4

Run Code Online (Sandbox Code Playgroud)

输出文件应该是这样的:

file_load.csv

Order_number,Quantity,Price
100,10,25.3
101,15,30.2
102,20,12.33
103,3,3.4
Run Code Online (Sandbox Code Playgroud)

这已经在 shell 脚本文件中了,因为现在我只需要获取一个文件,但现在我必须合并两个文件:

awk '(NR-1)%2{$1=$1}1' RS=\" ORS=\" orderline_*.csv >> file_to_load.csv
Run Code Online (Sandbox Code Playgroud)

我尝试将其更改为

awk 'FNR == 1 && NR != 1 {next} (NR-1)%2{$1=$1}1' RS=\" ORS=\" orderline_*.csv >> file_to_load.csv
Run Code Online (Sandbox Code Playgroud)

但我在输出中得到了两次标题。

请你帮助我好吗?该命令到底应该是什么样子?我需要保留它之前的定义方式。

谢谢你!

gle*_*man 5

您正在寻找

awk 'NR == 1 || FNR > 1' file ...
Run Code Online (Sandbox Code Playgroud)

NR是看到的所有记录的计数,
FNR是当前文件的记录数。