希望使用GAWK将人类可读时间戳转换为CSV文件中的纪元/ Unix时间,以准备加载到MySQL数据库中.
数据示例:
{null};2013-11-26;Text & Device;Location;/file/path/to/;Tuesday, November 26 12:17 PM;1;1385845647
Run Code Online (Sandbox Code Playgroud)
希望在11月26日星期二下午12:17进入第6列,并转换为纪元时间进行存储.显示的所有时间都是EST格式.我意识到AWK是这个的工具,但似乎无法构建命令.目前有:
cat FILE_IN.CSV | awk 'BEGIN {FS=OFS=";"}{$6=strftime("%s")} {print}'
Run Code Online (Sandbox Code Playgroud)
但是这会返回:
{null};2013-11-26;Text & Device;Location;/file/path/to/;1385848848;1;1385845647
Run Code Online (Sandbox Code Playgroud)
据推测,这意味着我正在调用当前的纪元时间(1385848848是执行时的当前纪元)而不是要求strftime转换字符串; 但我无法想象另一种方法.
gawk/ strftime将现有时间戳转换为纪元的正确语法是什么?
编辑:这个问题似乎与我如何在另一个命令中使用awk的输出松散相关?
希望检查字符串是否不包含以下语法中的单引号,'text'(尽管它也可能是 'text','text','text')但无法正确转义引号允许打开一个while循环。代码:
while [[ -z "$projects" ]] || [[ "$projects" =~ *"\'" ]]; do
<reprompt user, read var, and reset variable>
done
Run Code Online (Sandbox Code Playgroud)
以上是我梦寐以求的最好的,但它只寻找结尾 ',甚至不能正常工作,因为使用“a”进行测试不会导致进入循环。当单引号起作用时,我应该如何测试格式错误的用户字符串?