Команда AWK для добавления значений - PullRequest
0 голосов
/ 28 марта 2019

У меня есть сценарий, в котором я пытаюсь добавить три поля в строке, чтобы получить его во входном файле.Я написал что-то, что, по моему мнению, не соответствует лучшей практике Unix и нуждается в некоторых советах о том, как писать лучшие из возможных.Прикрепленный образец строки.

Мои вопросы:

  1. Можно ли добавить все три поля с помощью одной команды awk?
  2. Входной файл может не содержать некоторыеиз этих полей (основанных на сценариях), может ли awk справиться с этим?Должен ли я сделать какую-либо проверку?
  3. Когда-нибудь значения могут содержать "~" в конце, как считать только цифры?

Линия ввода файла File1

CLP*4304096*20181231*BH*0*AH>444*158330.97~*FB*0*SS>02*0*SS>03*0*J1*0~

Линия ввода файла File2

CLP*4304096*20181231*BH*0*AH>444*158330.97*FB*0

Сценарий, который я написал

 clp=$(awk -F'[*]' '/CLP/{print $7}' $file)
 ss02=$(awk -F'[*]' '/CLP/{print $11}' $file)
 ss03=$(awk -F'[*]' '/CLP/{print $13}' $file)
 clpsum=clp+ss02+ss03

Я знаюэто не лучший способ, пожалуйста, дайте мне знать, как я могу обработать сценарий как входного файла 1 (он имеет 158330.97 ~), так и сценарий файла 2.

Спасибо!

1 Ответ

0 голосов
/ 28 марта 2019
Команда

in 1 awk:

awk 'BEGIN{FS="*"}{var1=$7;var2=$11;var3=$13; var4=var1+var2+var3; printf("var4 = %.2f\n",var4)}' file.txt

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

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