如何更改shell脚本中的第二列

如何更改shell脚本中的第二列,shell,unix,awk,sed,Shell,Unix,Awk,Sed,我有一个包含以下数据的文件。我想使用shell脚本将第二列从“201710110923”格式更改为“2017-10-11 09:23:00”格式 "2017-10-16 14:03:07", "201710110923" "2017-10-16 14:03:22", "201710110930" 请帮忙 感谢和问候 拉杰什跟随awk可能会对你有同样的帮助 awk -F"\"" '{$4=substr($4,1,4)"-"substr($4,5,2)"-"substr($4,7,2) " "

我有一个包含以下数据的文件。我想使用shell脚本将第二列从
“201710110923”
格式更改为
“2017-10-11 09:23:00”
格式

"2017-10-16  14:03:07", "201710110923"
"2017-10-16  14:03:22", "201710110930"
请帮忙

感谢和问候

拉杰什

跟随awk可能会对你有同样的帮助

awk -F"\"" '{$4=substr($4,1,4)"-"substr($4,5,2)"-"substr($4,7,2) " " substr($4,9,2)":"substr($4,11,2)":"substr($4,13,2)} 1' OFS="\""  Input_file
输出如下

"2017-10-16  14:03:07", "2017-10-11 09:23:"
"2017-10-16  14:03:22", "2017-10-11 09:30:"
使用以下命令:

sed -r 's/(.*, \")([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})/\1\2-\3-\4 \5:\6:00/g' inputfile.in

在这里,我们使用正则表达式组捕获匹配项,然后替换输出。如果要更新文件,请使用
-i
选项。

bash
替代解决方案:

IFS=','; while read d1 d2; do 
    d2=$(tr -d '[:space:]' <<<"$d2")
    new_d=$(date -d"$(echo ${d2:1:4}/${d2:5:2}/${d2:7:2} ${d2:9:4})" +'%Y-%m-%d %H:%M:%S')
    printf '%s, "%s"\n' "$d1" "$new_d"
done < yourfile

@pythonlover,不客气,很高兴它帮助了你。看到这个了吗
"2017-10-16  14:03:07", "2017-10-11 09:23:00"
"2017-10-16  14:03:22", "2017-10-11 09:30:00"