您好我有一些类似的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更改。
谢谢,非常感谢!
答案 0 :(得分:1)
在我的机器(Mac OS)上,您需要的命令是
echo "11:22:33 AM" | awk '{split($1,a,":"); if($2=="PM") {a[1]=a[1]+12;} print a[1] ":" a[2] ":" a[3]}'
这可以手动分割时间(而不是依赖于date
,这是一个平台依赖)并且如果它是PM则增加12。
所以整个事情变成了:
awk -F"," '{print $2}' *.csv | awk '{split($1,a,":"); if($2=="PM") {a[1]=a[1]+12;} print a[1] ":" a[2] ":" a[3]}'
虽然你真的想跳过文件中的第一行,所以
awk -F"," 'if(NR>1){print $2}' *.csv | awk '{split($1,a,":"); if($2=="PM") {a[1]=a[1]+12;} print a[1] ":" a[2] ":" a[3]}'
答案 1 :(得分:0)
谢谢! 现在,经过几个小时我可以使用' date'来转换时间,然后代码为:
echo "11:04:44 PM" | awk -F, -v hora=$1 '{system("date --date=\""$hora"\" +%T");print $hora}'
使用thaat,您可以比较24小时和上午/下午的时间
细节是' \"'在' $ hora'之前和之后变量
)
然后,要从你必须放置的csv文件中转换完整的DAte-Hour:
awk -F"," '{if (FNR>=3) print $2}' *.csv | awk '{print $1","$2" "$3}'| awk -F, '{system("printf "$1", & date --date=\""$2"\" +%T")}'
现在,我必须设计一个新的文件,包括id和values列......