Establecer CHARMAP="UTF-8"
en/etc/default/console-setup
.
Ejecute systemctl daemon-reload && systemctl restart console-setup.service
después.
Как упоминалось в комментариях, глупо иметь такую избыточную информацию. Но если вам действительно это нужно, используйте группы захвата и обратные -ссылки:
sed 's/^\(....\)-\(..\)-\(..\)T\(..\).*/&;\1\2\3\4;\1\2\3/'
perl -F\; -pale '$_.= join ";", q{}, $F[0] =~ tr/T-//dr =~ /^((\d{8})\d{2})/' CSV.file
Похоже, что ваши входные данные ограничены ;
-, поэтому я предполагаю, что вы хотите, чтобы выходные данные были так же ограничены.
$ cat file.csv
2017-05-08T21:59:10.263Z;some;other;fields
2017-05-08T21:59:10.000Z;some;other;fields
2017-05-08T21:59:10.000Z;some;other;fields
2017-05-08T18:59:11.000Z;some;other;fields
2017-05-08T18:59:11.000Z;some;other;fields
2017-05-08T21:00:00.000Z;some;other;fields
2017-05-08T21:00:00.000Z;some;other;fields
2017-05-08T21:00:00.000Z;some;other;fields
2017-05-08T21:00:00.000Z;some;other;fields
2017-05-08T21:00:00.000Z;some;other;fields
$ awk -F ';' -v OFS=';' '{ split($1,a,":"); gsub("[^0-9]","",a[1]); $(NF+1)=a[1]; $(NF+1)=substr(a[1],0,8); print}' file.csv
2017-05-08T21:59:10.263Z;some;other;fields;2017050821;20170508
2017-05-08T21:59:10.000Z;some;other;fields;2017050821;20170508
2017-05-08T21:59:10.000Z;some;other;fields;2017050821;20170508
2017-05-08T18:59:11.000Z;some;other;fields;2017050818;20170508
2017-05-08T18:59:11.000Z;some;other;fields;2017050818;20170508
2017-05-08T21:00:00.000Z;some;other;fields;2017050821;20170508
2017-05-08T21:00:00.000Z;some;other;fields;2017050821;20170508
2017-05-08T21:00:00.000Z;some;other;fields;2017050821;20170508
2017-05-08T21:00:00.000Z;some;other;fields;2017050821;20170508
2017-05-08T21:00:00.000Z;some;other;fields;2017050821;20170508
Программа awk
берет первое;
-поле с разделителями и разбивает его на :
. Затем он удаляет все цифры, отличные от -, из первой части поля (за бит до первого:
)и добавляет его как новое поле в конце. Затем в конец строки добавляется второе новое поле, состоящее только из первых восьми символов первого нового поля. Затем печатается новая строка.