Расщепление помеченной строки в формате данных - PullRequest
0 голосов
/ 02 июля 2019

Мне нужно проанализировать строку awked:

dd.mm.yyyy %H:%M:%S into yyyy-mm-dd %H:%M:%S

пример:

10.04.2017 10:15:05 into 2017-04.10 10:15:05

Мне нужен awk, потому что файл большой, и только один столбец - это данные с "|"разделитель.Столбец с номером $ 3.

Пробное разбиение, но я застрял:

awk -F"|" '{split($3,data," "}' | awk '(split(data[3],data2,"."}

не может получить данные из данных для печати переменных в необходимом порядке.

Ответы [ 4 ]

0 голосов
/ 02 июля 2019

Следующая команда изменяет третье поле ($3) в соответствии с вашими требованиями.

awk -F"|" -v OFS="|" '{
    split($3, o, "[. ]" );
    $3 = o[3] "-" o[2] "-" o[1] " " o[4];
    print
}'

Для ввода dfdsfsdg| kljgslfdjgl|10.04.2017 10:15:05 вывод составляет dfdsfsdg| kljgslfdjgl|2017-04-10 10:15:05.

0 голосов
/ 02 июля 2019

Простой awk

echo "10.04.2017 10:15:05" | awk -F"[. ]" '{print $3"-"$2"."$1,$4}
2017-04.10 10:15:05

Установка пробела и точки в качестве разделителя полей и распечатка.
Если что-то находится посередине, вам может понадобиться найти и настроить больше.

0 голосов
/ 02 июля 2019

Если ваша дата в 3-м поле.

Может быть, все, что вам нужно заменить . на - в 3-м поле. Как то так:

awk -F "|" '{gsub("\.","-",$3)}1'

Пожалуйста, предоставьте пример входных данных и ожидаемый результат.

0 голосов
/ 02 июля 2019

Если у вас есть переменная string в awk, которая гласит «10 .04.2017 10:14:05», вы можете разделить ее с помощью разделителей полей и перестроить:

split(string,a,'[. ]')
string_new = a[3]"-"a[2]"-"a[1]" "a[4]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...