2017-10-31 7 views
1

以下のデータを持つファイルがあります。私は助けてくださいシェルスクリプトシェルスクリプトの2番目の列を変更する方法

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

を使用して"2017-10-11 09:23:00"形式に"201710110923"形式から2番目の列を変更します。 awk後&よろしく
ラジェッシュ

答えて

1

使用:ここで

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オプションを使用してください。

0

おかげで同じであなたを助けるかもしれません。

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:" 
+0

@pythonlover、あなたの歓迎、。このhttps://stackoverflow.com/help/someone-answersを参照してください。 – RavinderSingh13

0

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 

出力:それはあなたを助けたことを喜んで

"2017-10-16 14:03:07", "2017-10-11 09:23:00" 
"2017-10-16 14:03:22", "2017-10-11 09:30:00" 
関連する問題