我将合并多个.csv报告。
下载后,它会写成这样:
文件1。
Name Name Flavor
AAA BBB CCC
AAA BBB CCC
文件2。
Name Name Flavor
ACB DHB 123
我尝试使用“ awk”命令。
awk 'FNR== 1{print ""}1' *.csv >> ReportsVol.csv
与它们合并所有文件。 但是输出结果如下。
Name Name Flavor
AAA BBB CCC
AAA BBB CCC
Name Name Flavor
ACB DHB 123
但是我希望每个文件之间都有一个日期。因此,我认为使用“时间戳”将可能实现,但是我不知道如何部署它们。 并且描述(名称,名称,风味)应该只写入文件顶部一次。
最后我想要这样的东西:
Name Name Flavor
<timestamp>
AAA BBB CCC
ABC BCD CDE
<timestamp>
ACB DHB 123
在此先感谢您的帮助!
答案 0 :(得分:4)
systime()
将在您使用GNU awk时起作用,但是您可能会用该函数替换返回所需日期的函数。
awk 'NR==1;FNR==1{print systime(); next}1' file1 file2
返回
Name Name Flavor
1543486733
AAA BBB CCC
AAA BBB CCC
1543486733
ACB DHB 123
我不知道您想要什么样的日期,所以我使用了systime()
编辑
使用文件的最后修改时间:
awk 'NR==1{printf "%s", $0};FNR==1{print ""; system("date -r" FILENAME); next}1' *.csv > ReportsVol.csv
返回:
Name Name Flavor
Thu Nov 29 11:11:49 CET 2018
AAA BBB CCC
AAA BBB CCC
Thu Nov 29 11:12:07 CET 2018
ACB DHB 123
如果您希望日期格式自时代起以秒为单位,请使用system("date +%s -r " FILENAME)
。
如果不需要用空行分隔文件,请删除print "";
。
答案 1 :(得分:1)
请您尝试以下。
awk '
FNR==1{
if(++count==1){
print $0 ORS systime()
}
if(count==2){
print systime()
}
next
}
1' Input_file
答案 2 :(得分:1)
awk -v d="$(date)" 'FNR==1{print (NR==1 ? $0 : "") ORS d; next} 1' *.csv
根据需要指定date
选项。