tar :как извлечь определенную версию файла с множеством обновленных экземпляров

ИМХО более изящно (ясно понятно )избегая "трюков" с tee.
@mikeserv уже показал команду sed, вы также можете «вставить» внутрь awk.
Пример с заменой команды командой printf:

$ printf "foo %s %s %s\n"  {1..30} 
foo 1 2 3
foo 4 5 6
foo 7 8 9
foo 10 11 12
foo 13 14 15
foo 16 17 18
foo 19 20 21
foo 22 23 24
foo 25 26 27
foo 28 29 30

Требование (пример):
Вставить вывод из

  1. sed -rn '/3/ s/[^ ]* ([^ ]*).*/\1/'
    Выберите только строки с «3» и получите второе поле.
    Это строки с первым номером 1, 13, 22 и 28
  2. awk 'NR>2 {print $3}'
    Показать третье поле для всех строк

Поток из требования 1 захватывается в массив bar,
поток из требования 2 захватывается в массив secondstream.
После обработки всех входных данных в блок END вставляются захваченные потоки.

printf "foo %s %s %s\n"  {1..30} |
   awk '/3/  {bar[barcounter++]=$2}
        NF>2 {secondstream[streamnr++]=$3} 
        END  {for (i=0;i<streamnr;i++) print bar[i], secondstream[i];}
       '

Результат:

1 2
13 5
22 8
28 11
 14
 17
 20
 23
 26
 29
1
14.09.2021, 19:56
0 ответов

Теги

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