Подставить или объединить вывод из двух команд в одну, используя одну строку command

Это поможет вам пройти большую часть пути:

awk -v pattern='\\[:...-Google' '
    $1 == "]" {p = 0} 
    p {print}
    $1 ~ pattern {p = 1} 
' file

Вам просто нужно выяснить, как поместить переменную в часть -v pattern="XYZ".

0
05.05.2020, 03:00
1 ответ
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.

3
28.04.2021, 23:18

Теги

Похожие вопросы