我正在使用 awk 向 CSV 文件添加一列。文件的每一行都以日期和时间开头。我希望新列是那个时间作为 Unix 纪元时间戳。
我将前三个字段提供给“日期”,这确实给了我时间戳,但有一些我不想要的杂散逗号“,”。下面是一个简化版本,只打印一个时间戳列作为输出。输入文件:
08/17/2020 21:46:04 -700 , 1 , 2 , 3
08/17/2020 21:47:03 -700 , 1 , 2 , 3
08/17/2020 21:48:03 -700 , 1 , 2
08/17/2020 21:49:04 -700 , 1 , 2
Run Code Online (Sandbox Code Playgroud)
这是我的程序:
cat input.csv | awk '{
tmp=$(system("date +%s -d \""$1" "$2" "$3"\""));
printf("%s", $tmp );
}'
Run Code Online (Sandbox Code Playgroud)
这是输出。这就是我所期望的,除了第 2 行和第 3 行的前导逗号。我认为 'tmp' 变量从 'date' 获得结果,包括一个尾随换行符,但有时在换行符后还有一个逗号。这似乎取决于输入文件中有多少字段跟随前三个,但我只引用前三个,如 $1 $2 $3 所以输入行的其余部分不起作用(?)为什么那些逗号出现在输出,我怎么能删除它们?有一个更好的方法吗?
1597725964
,1597726023
,1597726083
1597726144
Run Code Online (Sandbox Code Playgroud)