Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 操纵第一个字段,然后使用awk打印csv文件行的其余部分_Linux_Awk - Fatal编程技术网

Linux 操纵第一个字段,然后使用awk打印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 其结果是

我有很多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:事实上这样更清楚。谢谢,谢谢你的解决方案。