awk печатают соответствие, только если в последний раз записывают перед другим соответствием

Это, как и большинство вещей, объясняется в rsync Чрезвычайно всеобъемлющий человек Page (упор мой):

, когда отделка передачи файлов, rsync заменяет линию прогресса С помощью сводной строки, которая выглядит так:

  1,238,099 100% 146,38 кБ / с 0:00:08 (XFR # 5, to-chk = 169/396)
 

В этом примере файл был длиной 1238 099 байтов, Средняя скорость передачи для всего файла составила 146,38 килобайта за второе за 8 секунд, что потребовалось для завершения, Это было 5-го Передача регулярного файла во время текущего сеанса rsync , а 169 больше файлов для принятия ресивера (чтобы увидеть, если они современные или нет) остальные из 396 общих файлов в список файлов.

Итак, в вашем примере сборка / 2. East Rutherford - Английский - Пятница PM.MP4 был второй файл, который будет передан, а еще 5 из 8 файлов должны быть проверены.

0
11.02.2015, 10:24
2 ответа

Я хочу использовать awk для печати совпадений некоторого паттерна, только если это так. последняя строка файла перед каким-либо постоянным текстом.

В этом случае попробуйте следующее:

awk -F= '/constant text/ && name=="c"{print value} {name=$1;value=$2}' file

Примеры

$ cat file1 
a=1
b=2
c=3
...constant text...
$ awk -F= '/constant text/ && name=="c"{print value} {name=$1;value=$2}' file1
3
$ cat file2
a=1
c=3
b=2
...constant text...
$ awk -F= '/constant text/ && name=="c"{print value} {name=$1;value=$2}' file2
$ 

Как это работает

  • -F=

    Это говорит awk об использовании = в качестве разделителя полей. Таким образом, мы можем разделить имя и значение для таких полей как a=1 или c=3.

  • /константный текст/ && name=="c"{печать значения}

    Если мы дойдем до строки с константным текстом и name (как последний набор в предыдущей строке) - это c, то выведем значение.

  • name=$1;value=$2

    Для текущей строки сохраните первое поле в виде name, а второе - в виде value.

3
28.01.2020, 02:20

Некоторые Googling нашел мне лучший ответ до сих пор, хотя я уже получил ответ: использование TAC делает его намного проще ...

файл TAC |. awk 'nr == 2 {Если ($ 1 == "C") Печать $ 2}'

номер строки один после «постоянного текста». Если «постоянный текст» - одна строка - NR == 2 . Если это две линии - NR == 3 . Еще не решил, какой формат должен быть постоянный текст ...

0
28.01.2020, 02:20

Теги

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