unix 时间日期并使用 awk 在 bash 中替换
unix time to date and replace in bash using awk
我正在尝试将 unix 时间转换为日期和时间;
1436876820 blah1 stop none john
1436876820 blah0 continu none john
1436876821 blah2 stop good bob
我想将第一列转换为另外两列日期和时间,如下所示
14-07-15 13:27:00 blah1 stop none john
14-07-15 13:27:00 blah0 continu none john
14-07-15 13:27:01 blah2 stop good bob
etc..
所以我开始做以下事情。
IN=""
for i in $(awk '{print }' ${IN});
do
DD=$(date -d @${i} +'%d-%m-%Y %H:%M:%S')
awk '{ ="'"${DD}"'" }' < ${IN}
done
由于语法原因,这不起作用并给出这样的错误:
awk: { ="14-07-2015 13:27" }
awk: ^ syntax error
我可以使用 sed 而不是 awk:
sed "s/^1........./${DD}/" ${IN}
非常欢迎任何有关 awk 的帮助。
阿尔.
摆脱 shell 循环,只执行一次 awk 调用:
awk '{
cmd = "date -d @" " +\"%d-%m-%Y %H:%M:%S\""
if ( (cmd | getline dd) > 0 ) {
= dd
}
close(cmd)
print
}' ""
如果你有 GNU awk,你可以只使用它的内部 strftime() 而不是 date+getline:
awk '{
= strftime("%d-%m-%Y %H:%M:%S",)
print
}' ""
我正在尝试将 unix 时间转换为日期和时间;
1436876820 blah1 stop none john
1436876820 blah0 continu none john
1436876821 blah2 stop good bob
我想将第一列转换为另外两列日期和时间,如下所示
14-07-15 13:27:00 blah1 stop none john
14-07-15 13:27:00 blah0 continu none john
14-07-15 13:27:01 blah2 stop good bob
etc..
所以我开始做以下事情。
IN=""
for i in $(awk '{print }' ${IN});
do
DD=$(date -d @${i} +'%d-%m-%Y %H:%M:%S')
awk '{ ="'"${DD}"'" }' < ${IN}
done
由于语法原因,这不起作用并给出这样的错误:
awk: { ="14-07-2015 13:27" }
awk: ^ syntax error
我可以使用 sed 而不是 awk:
sed "s/^1........./${DD}/" ${IN}
非常欢迎任何有关 awk 的帮助。 阿尔.
摆脱 shell 循环,只执行一次 awk 调用:
awk '{
cmd = "date -d @" " +\"%d-%m-%Y %H:%M:%S\""
if ( (cmd | getline dd) > 0 ) {
= dd
}
close(cmd)
print
}' ""
如果你有 GNU awk,你可以只使用它的内部 strftime() 而不是 date+getline:
awk '{
= strftime("%d-%m-%Y %H:%M:%S",)
print
}' ""