Выход AWK с условием IF - PullRequest
       0

Выход AWK с условием IF

1 голос
/ 03 марта 2020

Я намерен прочитать файл, и когда поля VALID1 или VALID2 отличаются от нуля, они должны быть напечатаны вместе с полем идентификатора (Store: xx | Workstation:yy). Например, ниже приведен пример содержимого файла:

Store: 01 | Workstation:01
VALID1:3
VALID2:0
Store: 01 | Workstation:02
VALID1:0
VALID2:0
Store: 02 | Workstation:01
VALID1:3
VALID2:3
Store: 02 | Workstation:02
VALID1:0
VALID2:0
Store: 02 | Workstation:03
VALID1:5
VALID2:5
Store: 03 | Workstation:01
VALID1:0
VALID2:0
Store: 03 | Workstation:02
VALID1:0
VALID2:4

Я хочу следующий вывод:

Store: 01 | Workstation:01
VALID1:3
Store: 02 | Workstation:01
VALID1:3
VALID2:3
Store: 02 | Workstation:03
VALID1:5
VALID2:5
Store: 03 | Workstation:02
VALID2:4

Пробовал делать с awk, но безуспешно atm ($BODYTEXT - входной файл)

awk 'BEGIN 
    $1 ~ /Store/ {a = $1}
    $1 ~ /VALID1/ {b = $1}
    $1 ~ /VALID2/ {c = $3}
        if (b <>0 || c<>0){
            if (b=0)
                {print a,c}
            else if (c=0)
                    {print a,b}         
                else 
                    {print a,b,c}
            }
     '$BODYTEXT

Кто-нибудь может мне помочь?

Заранее спасибо

1 Ответ

0 голосов
/ 03 марта 2020
awk -F: '/^Store/{store=$0; pstore=0} /^VALID/ && $2{if(!pstore){print store; pstore=1}; print}' <file>

Выход:

Store: 01 | Workstation:01
VALID1:3
Store: 02 | Workstation:01
VALID1:3
VALID2:3
Store: 02 | Workstation:03
VALID1:5
VALID2:5
Store: 03 | Workstation:02
VALID2:4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...