еще один вопрос по sed

Establecer CHARMAP="UTF-8"en/etc/default/console-setup.

Ejecute systemctl daemon-reload && systemctl restart console-setup.servicedespués.

-4
08.06.2017, 17:12
3 ответа

Как упоминалось в комментариях, глупо иметь такую ​​избыточную информацию. Но если вам действительно это нужно, используйте группы захвата и обратные -ссылки:

sed 's/^\(....\)-\(..\)-\(..\)T\(..\).*/&;\1\2\3\4;\1\2\3/'
0
28.01.2020, 05:20
perl -F\; -pale '$_.= join ";", q{}, $F[0] =~ tr/T-//dr =~ /^((\d{8})\d{2})/' CSV.file
0
28.01.2020, 05:20

Похоже, что ваши входные данные ограничены ;-, поэтому я предполагаю, что вы хотите, чтобы выходные данные были так же ограничены.

$ 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берет первое;-поле с разделителями и разбивает его на :. Затем он удаляет все цифры, отличные от -, из первой части поля (за бит до первого:)и добавляет его как новое поле в конце. Затем в конец строки добавляется второе новое поле, состоящее только из первых восьми символов первого нового поля. Затем печатается новая строка.

0
28.01.2020, 05:20

Теги

Похожие вопросы