【发布时间】:2014-11-19 11:40:22
【问题描述】:
您好,我有一些这样的 csv 文件:
"N.º","Fecha Tiempo, GMT-03:00","Temp, °C (LGR S/N: 10466185, SEN S/N: 10466185, LBL: Temperatura)","Acoplador separado (LGR S/N: 10466185)","Acoplador adjunto (LGR S/N: 10466185)","Host conectado (LGR S/N: 10466185)","Parado (LGR S/N: 10466185)","Final de archivo (LGR S/N: 10466185)"
1,03/03/14 01:00:00 PM,25.477,Registrado,,,,
2,03/03/14 02:00:00 PM,24.508,,,,,
3,03/03/14 03:00:00 PM,26.891,,,,,
4,03/03/14 04:00:00 PM,25.525,,,,,
5,03/03/14 05:00:00 PM,27.358,,,,,
然后我想将数据小时的第二个字段转换为两个字段:日期,小时
我可以分割日期和小时,但是当我尝试将上午-下午的小时转换为 24 小时的小时时,我失败了。
对所有文件使用此命令:
awk -F"," '{print $2}' *.csv|awk '{print $1","$2" "$3}'
我正在执行那个命令,特别是:
echo "11:04:44 PM" | awk -F, -v hora=$1 '{system("date --date=$hora +%T");print $hora}'
00:00:00
11:04:44 PM
问题是系统内部的变量(日期...因为它返回 0 或空。
那么问题是如何做到这一点。 最后如何在文件中插入 tath 更改。
谢谢,非常感谢!
【问题讨论】:
-
您可以为您发布的输入添加所需的输出吗?
-
那么您的问题真的是关于将 AM/PM 转换为 24 小时制吗?
-
我认为您不想在命令中使用
$hora,因为它会评估hora,然后尝试查找该字段(记住$1= 第一个字段和a=3; $a返回第三个字段$3,而不是值 3。) -
如果你有一个环境变量,你可以在 awk 环境中使用: awk -v my_var=YOUR_VARIABLE '{blablabla;打印 my_var}'
-
如果你想运行一个'命令'你必须像一个字符串一样写,并且管道:awk '{ value=$4;命令='日期-d ='值;命令 |获取线d;关闭);打印(d)}'