с awk:
echo '211B1 CUSTOMER|UPDATE|
211B2 CUSTOMER|UPDATE|
211B3 CUSTOMER|UPDATE|
211B4 CUSTOMER|UPDATE|
211B5 CUSTOMER|UPDATE|
567FR CUSTOMER|DELETE|
647GI CUSTOMER|DELETE|' | awk -F '[ |]' '
BEGIN {
upd="";del=""
} {
if ($3 == "UPDATE") {upd = upd" "$1};
if ($3 == "DELETE") {del = del" "$1};
} END {
print "Updates:"upd; print "Deletes:"del
}'
производит:
Updates: 211B1 211B2 211B3 211B4 211B5
Deletes: 567FR 647GI
Он просто разбивает каждую строку на три поля (с параметром -F
) и поддерживает список обновлений и удаляет добавляемые в зависимости от «команды».
BEGIN
и END
выполняются до и после всей обработки строки, поэтому они инициализируются и получают конечный результат.
Я бы сделал это в сценарии, чтобы было проще. Я оставил его как инструмент командной строки, поскольку именно так я обычно отлаживаю свои сценарии awk.