Это, как и большинство вещей, объясняется в 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 файлов должны быть проверены.
Я хочу использовать 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
.
Некоторые Googling нашел мне лучший ответ до сих пор, хотя я уже получил ответ: использование TAC
делает его намного проще ...
файл TAC |. awk 'nr == 2 {Если ($ 1 == "C") Печать $ 2}'
номер строки один после «постоянного текста». Если «постоянный текст» - одна строка - NR == 2
. Если это две линии - NR == 3
. Еще не решил, какой формат должен быть постоянный текст ...