Это поможет вам пройти большую часть пути:
awk -v pattern='\\[:...-Google' '
$1 == "]" {p = 0}
p {print}
$1 ~ pattern {p = 1}
' file
Вам просто нужно выяснить, как поместить переменную в часть -v pattern="XYZ"
.
awk 'NR==FNR{a[$1]=$2; next} {$3=a[$3]} 1' <(command1) <(command2)
может быть тем, что вы ищете.
Я подправил вышеизложенное и повторно -запустил с учетом вывода двух добавленных вами командных сценариев:
$ awk '
NR==FNR { map[$1]=$2; next }
{ key=$NF; sub(/[^[:space:]]+[[:space:]]*$/,""); print $0 map[key] }
' <(./command1.sh) <(./command2.sh)
COLUMN3 COLUMN4 NAME1
kkk www wwaaw www www eee
kkk pppppppppppp paaapp ppp ppp aaa
kkk qqq qqq qqqqqqqqqqqqqqq nnn
lll tttttttttttt ttttttttt ttt ttt ccc
kkk rrrrrr rrrrrr rrrraarrrrr rrr ccc
Я написал это таким образом, что сопоставление будет работать, а вывод сохранит тот же интервал, что и ввод, независимо от того, есть ли пробелы в 3-м поле первого входного потока или во 2-м поле 2-го входного потока или если пробелы пробелы или вкладки, а также имеют ли поля фиксированную ширину -или нет. Единственными полями, которые не могут содержать пробелы, являются поля 1 и 2 ввода 1 и поле 3 ввода 2.