AWK: Как сравнить две переменные с регулярным выражением

Он торгует небольшим объемом надежности для большого увеличения пропускной способности.

Предположим, например, программа сжатия видео. С задержкой записи («обратная запись»):

  1. потратьте 10 мс на сжатие кадра
  2. выдайте кадр записи на диск
  3. подождите 10 мс, пока диск не подтвердит завершение записи
  4. GOTO 1

в сравнении с

  1. потратьте 10 мс на сжатие кадра
  2. выдайте кадр записи на диск (завершается в фоновом режиме)
  3. GOTO 1

Вторая версия появляется в два раза быстрее, поскольку она может одновременно использовать ЦП и диск, в то время как первая версия всегда ожидает одну или другую.

Обычно требуется обратная запись для потоковых операций и операций с массовыми файлами, а также сквозная запись для баз данных и приложений, подобных базам данных.

-121--5677-

Это ключ к проблеме:

 test.sh: строка 98: синтаксическая ошибка около неожиданного маркера 'done'
"est.sh: строка 98:" выполнено < isam_subrack2.txt 2 >/dev/null "

Эта вторая строка обычно читается так

test.sh: line 98: `done  < isam_subrack2.txt 2> /dev/null'

Как видно, заключительная кавычка из сообщения об ошибке находится в начале строки. Это является симптомом неожиданных символов CR в текстовом файле. Я вижу, что вы запустили файл через dos2unix , но я все равно рекомендую вам запустить его через нечто подобное еще раз:

tr -d '\015' < src.sh > dst.sh
-121--133199-

я нашел его сам.

pacman -[desired-arguments]p

, например:

pacman -Sup

p, печатает выходные данные требуемых аргументов без их выполнения.

3
02.02.2018, 12:54
1 ответ

/^$3/— это регулярное выражение, которое гарантированно никогда не будет соответствовать , так как оно совпадает с записями, имеющими 3после конца записи (регулярное выражение $якорь Оператор ] совпадает в конце темы, не путать с оператором $awk, который используется для разыменования полей по номеру ).

Чтобы проверить, встречается ли третье поле в начале четвертого поля, можно выполнить сопоставление регулярного выражения с match(), которое вернет начальную позицию совпадения (или -1, если нет совпадение найдено):

awk -F ':' 'match($4, $3) == 1 {..."GOOD"... ; next } {..."BAD"... }'

или, для сравнения строк,

awk -F ':' 'substr($4, 1, length($3)) == $3 {..."GOOD"... ; next } {..."BAD"... }'
8
27.01.2020, 21:08

Теги

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