LINUX.ORG.RU

Проблема с awk


0

0

Надо сделать примерно следующее:

read D1 D2 D3 D4
gawk -v dat1="D1" -v dat2="D2" -v dat3="D3" '{ if($1 == dat1) print $2 \
if($1 == dat2) print $2 }' in_file >> out_file

В Файле in_file примерно:
AAA 123
BBB 546
DDD 908
CCC 543
......

Нужно проверить на совпадениеие D1,D2,D3 с первым полем in_file и , 
если да, то выводится второе поле in_file (123 например).
Например, D1=CCC,D2=AAA,D3=DDD, тогда в out_file:
543
123
908

Сложность в том, что в моем примере первое условие (для dat1) 
выполняется, а второе - нет, т.к. $1 уже равно dat1. Вызов gawk 
должен выполняться один раз.




Ответ на: комментарий от senjy

Пишешь нужное кол-во правил:
$1 == dat1 {a[1] = $2; ++n}
$1 == dat2 {a[2] = $2; ++n}
и т.д.

Печатаешь массив:
END {for (i = 1; i <= n; i++) print a[i]}

amm
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.