【发布时间】:2019-03-27 00:58:09
【问题描述】:
我有一个 CSV 日志文件,其中每条记录的时间戳都有双引号,格式如下:
"2018-10-22 14:38:29", ...comma-separated values...
"2018-10-22 13:18:07", ...comma-separated values...
我想根据时间戳提取记录,并使用date 以编程方式调整此时间戳,但由于双引号,我没有太多运气这样做。
当我在脚本中硬编码时间戳时,我可以让它工作......
# This will work
awk '
BEGIN { FS=" "; split_stamp="\"2018-10-22 14:00:00\"" }
$1<=split_stamp { print $0 )
' $filename
但不是将目标时间戳分配给单独的变量(我最好通过命令行选项设置)...
# But this fails silently
split_at="\"2018-10-22 00:00:00\""
awk '
BEGIN { FS=" "; split_stamp=$split_at }
$1<=split_stamp { print $0 )
' $filename
关于如何处理双引号的任何建议(无需制作单独的日志文件副本并删除双引号)?或者也许有比awk 更好的工具?
【问题讨论】:
-
有两种解决方案。编写自己的 bash 解析器,并记住正确处理
" esacped doubleqoutes \" "。或者只使用csvtool。
标签: bash date awk timestamp quotes