首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash合并文件

Bash合并文件
EN

Stack Overflow用户
提问于 2018-11-29 17:56:48
回答 3查看 89关注 0票数 1

我将合并多个.csv报告。

当我下载它时,它会写成这样:

文件1。

代码语言:javascript
复制
Name Name Flavor
AAA  BBB  CCC
AAA  BBB  CCC

文件2。

代码语言:javascript
复制
Name Name Flavor
ACB  DHB  123

我尝试使用"awk“命令。

代码语言:javascript
复制
awk 'FNR== 1{print ""}1' *.csv >> ReportsVol.csv 

通过它们,它合并了所有的文件。但输出结果随后就会出现。

代码语言:javascript
复制
Name Name Flavor
AAA  BBB  CCC
AAA  BBB  CCC
Name Name Flavor
ACB  DHB  123

但我希望每个文件之间有一个日期。所以我认为使用“时间戳”可以做到这一点,但我不知道如何部署它们。描述(名称,名称,风味)应该只写在文件的顶部一次。

最后,我想要这样的东西:

代码语言:javascript
复制
Name Name Flavor
 <timestamp>
AAA  BBB  CCC
ABC  BCD  CDE

<timestamp>
ACB  DHB  123

提前感谢您的帮助!

EN

回答 3

Stack Overflow用户

发布于 2018-11-29 18:19:47

如果您使用GNU awk,systime()将会工作,但您可能会将此函数替换为返回所需日期的函数。

代码语言:javascript
复制
awk 'NR==1;FNR==1{print systime(); next}1' file1 file2

返回

代码语言:javascript
复制
Name Name Flavor
1543486733
AAA  BBB  CCC
AAA  BBB  CCC
1543486733
ACB  DHB  123

我不知道你想要什么样的日期,所以我用了systime()

编辑

使用上次修改文件的时间:

代码语言:javascript
复制
awk 'NR==1{printf "%s", $0};FNR==1{print ""; system("date -r" FILENAME); next}1' *.csv > ReportsVol.csv

返回:

代码语言:javascript
复制
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 "";

票数 4
EN

Stack Overflow用户

发布于 2018-11-29 18:27:05

你能不能试着跟上。

代码语言:javascript
复制
awk '
FNR==1{
  if(++count==1){
     print $0 ORS systime()
  }
  if(count==2){
     print systime()
  }
  next
}
1'   Input_file
票数 1
EN

Stack Overflow用户

发布于 2018-11-30 10:03:37

代码语言:javascript
复制
awk -v d="$(date)" 'FNR==1{print (NR==1 ? $0 : "") ORS d; next} 1' *.csv

根据需要指定date选项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53536236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档