Linux 操纵第一个字段,然后使用awk打印csv文件行的其余部分
我有很多csv文件,我需要在其中操作包含日期的第一个字段,然后打印行的其余部分。 这些文件具有不同的字段长度 我的样品线是Linux 操纵第一个字段,然后使用awk打印csv文件行的其余部分,linux,awk,Linux,Awk,我有很多csv文件,我需要在其中操作包含日期的第一个字段,然后打印行的其余部分。 这些文件具有不同的字段长度 我的样品线是 "11.07.2016 00:00:00",DON1SOE02,PAPN,PAPN,OPEN1000,918945, 我试过下面的代码 awk -F"," '{print "\""substr($1,08,4)"-"substr($1,5,2)"-"substr($1,2,2)substr($1,12,9)"\","$0""}' file.csv 其结果是
"11.07.2016 00:00:00",DON1SOE02,PAPN,PAPN,OPEN1000,918945,
我试过下面的代码
awk -F"," '{print "\""substr($1,08,4)"-"substr($1,5,2)"-"substr($1,2,2)substr($1,12,9)"\","$0""}' file.csv
其结果是
"2016-07-11 00:00:00","11.07.2016 00:00:00",DON1SOE02,PAPN,PAPN,OPEN1000,918945,
有没有办法避免打印未修改的日期字段,即“11.07.2016 00:00:00”
下面的解决方案可以跳过第一列,但我想修改第一列,然后打印修改,然后跳过打印未修改的第一列
您必须在第一个字段中为您的参数指定新值:
awk'{$1=“…”}1
。否则整行$0
将保持不变:
awk -F, -v OFS=, '{$1="\""substr($1,8,4)"-"substr($1,5,2)"-"substr($1,2,2)""substr($1,12,9)"\""}1' file.csv
@fedorqui:事实上这样更清楚。谢谢,谢谢你的解决方案。