Команда AWK для нескольких условий печатает разные столбцы - PullRequest
0 голосов
/ 07 марта 2019

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

Файл 1

Line 1: ST*835*0001~
Line 2: ABC*I*K*KI*330.33*C*AED*CCP*01*071000013*DA*645906447*1752578509

Файл 2

Line 1 : ST|835|0103~
Line 2 : ABC|I|330.33|C|01|

Ниже приведен мой сценарий,

for file in "$SEARCH_DIR"/*; do
   recamt=$(awk -F'[|*]' '/ABC/{print $4}' $file)
    echo " $recamt " >> $logFile
done

Мне нужно напечатать значение 330.33 на основе ABC, но поскольку столбцы различаются (файл 1 находится в столбце 4, файл 2 является столбцом 3), Я не получаю ожидаемый результат ... Как мне этого добиться?Спасибо!

У меня также есть еще один awk, который использует, как показано ниже

filedate=$(awk -F'*' '/\*HP\*IRX\*/ {print $5}' $file)

Как мне добавить дополнительное условие для awk -F"|" вместе с "*", но при поиске "'/\*HP\*IRX\*/" и "'/\|HP\|IRX\|/.. Надеюсь, мне ясно.Спасибо!

1 Ответ

0 голосов
/ 08 марта 2019

Вот одна строка: awk -F'[|*]' '{if($3==330.33) print "/ABC/"$3}' ./* >> logFile

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