
私は次のCSVを持っています
9999999,012021,I,0099999999,000000000099999999+,000000000000000000-,000000000000000000-
9999999,012021,I,0099999999,000000000099999999+,000000000000000000-,000000000000000000-
9999999,012021,I,0099999999,000000000099999999+,000000000000000000-,000000000000000000-
9999999,012021,I,0099999999,000000000099999999+,000000000000000000-,000000000000000000-
常に01日を日付として追加するように2番目の列をフォーマットしたいと思います。
9999999,2021-01-01,I,0099999999,000000000099999999+,000000000000000000-,000000000000000000-
9999999,2021-01-01,I,0099999999,000000000099999999+,000000000000000000-,000000000000000000-
答え1
次の操作がawk
実行されます。
awk -F, 'BEGIN {OFS=","} {a=substr($2,1,2);b=substr($2,3,4);$2=b"-"a"-01";print $0}' input_file
これはほとんどすべてのawk
.for Solarisの使用で機能します。/usr/xpg4/bin/awk
または/usr/xpg6/bin/awk
(@EdMortonのコメントを参照)
PS私は012021
01
月2021
と年であると仮定します。
答え2
使用sed
$ sed 's/\([^,]*,\)\([0-9]\{2\}\)\([^,]*\)\(.*\)/\1\3-\2-01\4/' input_file
9999999,2021-01-01,I,0099999999,000000000099999999+,000000000000000000-,000000000000000000-
9999999,2021-01-01,I,0099999999,000000000099999999+,000000000000000000-,000000000000000000-
9999999,2021-01-01,I,0099999999,000000000099999999+,000000000000000000-,000000000000000000-
9999999,2021-01-01,I,0099999999,000000000099999999+,000000000000000000-,000000000000000000-