У меня есть сценарий, в котором я пытаюсь добавить три поля в строке, чтобы получить его во входном файле.Я написал что-то, что, по моему мнению, не соответствует лучшей практике Unix и нуждается в некоторых советах о том, как писать лучшие из возможных.Прикрепленный образец строки.
Мои вопросы:
- Можно ли добавить все три поля с помощью одной команды awk?
- Входной файл может не содержать некоторыеиз этих полей (основанных на сценариях), может ли awk справиться с этим?Должен ли я сделать какую-либо проверку?
- Когда-нибудь значения могут содержать "~" в конце, как считать только цифры?
Линия ввода файла 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.
Спасибо!