Bash脚本将时间戳附加/插入CSV

时间:2016-06-26 21:51:21

标签: bash awk sed scripting file-writing

我有一个名为RecordCountTest.csv的CSV文件示例,如下所示:

Date         Time           Shift         Record
26-06-2016   15:23:01       Shift2        000002
23-06-2016   09:06:24       Shift1        000001

按下GPIO引脚有线按钮时,将运行bash脚本命令。我想要一个简单的AWK或Bash脚本,我可以在命令运行后调用它来记录它发生并跟踪何时。我想通过在当前日期(DD-MM-YYYY),当前时间(HH:MM:SS)的顶部(但在标题下)插入一行来实现这一点,该变量是由bash脚本(如果我在此之前无法弄清楚,我将在90分钟内发布该问题),然后将记录增加1并将文件保存为RecordCountTest.CSV。如果可能的话,我更喜欢SED,因为这是我目前正在努力学习的内容以及任何可能有助于我理解语法的建议,但是会接受任何可以在这个bash脚本中工作的内容,包括AWK。

1 个答案:

答案 0 :(得分:2)

awk救援!

$ gawk -v OFS="\t" -v s="${shift}" 'NR==2{print strftime("%d-%m-%Y"), 
                                               strftime("%H:%M:%S"), 
                                               s, 
                                               sprintf("%06d",$4+1)} 
                                        {$1=$1}1' file > temp && mv temp file  

如果您的awk不支持strftime功能,则可以恢复为bash

$ awk -v OFS="\t" -v s="${shift}" 
                  -v d="$(date +"%d-%m-%Y"$'\t'"%H:%M:%S")" 
          'NR==2{print d, s, sprintf("%06d",$4+1)} 
                {$1=$1}1' file > temp && mv temp file