Проблема с форматированием скрипта awk - изменение формата файла - PullRequest
0 голосов
/ 27 апреля 2018

Я пишу сценарий awk, чтобы при запуске он использовал командную строку

awk -f file.awk fileitreadsfrom

Я редактирую "fileitreadsfrom" в моем awk-скрипте. У меня проблемы с редактированием в моем скрипте. Так, например, я хочу

1209480997,0997-464, Энтони, Альварадо, 3, Стандарт, Ира А Фултон Инженерно-информационные технологии, старший, aalvar33, нерезидент,

читать как

Альвардо: Энтони: 1209480997: Ира А Фултон Инжиниринг - Информация Технология: Старший: aalvar33: aalvar@email.com

Что я пробовал до сих пор

#!/bin/awk -f 

awk '/Alvardo/ {print $4}' fileitreadsfrom

Я также пытался использовать substr, но, боюсь, не правильно понял

Как мне отредактировать строку и переставить ее в формат apporiate?

1 Ответ

0 голосов
/ 04 октября 2018

Прежде всего, я хочу убедиться, что я понимаю. Вы говорите, что редактируете входной файл, но это не совсем то, как обычно используется awk. Более стандартно взять входной файл и записать в другой выходной файл (или записать в терминал, stdout).

Во-вторых, если все, что вы делаете, это переупорядочиваете поля и изменяете разделители с запятыми на двоеточия, это должно быть просто.

awk -F, '{printf "%s:%s:%s:%s:%s:%s:%s:%s:%s:%s\n", 
          $4, $3, $1, $7, $8, $9, "email"}'

Но если адрес электронной почты рассчитывается как первая фамилия, вы можете попробовать это:

awk -F, '{email = sprintf ("%s%s@email.com", substr ($3, 1, 1), substr ($4, 1, 5); 
          printf "%s:%s:%s:%s:%s:%s:%s:%s:%s:%s\n", 
          $4, $3, $1, $7, $8, $9, email}'

Вы можете сделать это более эффективно, но я использовал sprintf и printf, чтобы прояснить, что я делал. Если символы имеют значение, сделайте его короче. Но я надеюсь, что так легче понять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...