Счетчик строк файла

Используя awk, вы можете извлекать числа различными способами. Сценарий ниже ожидает увидеть шаблон:

  1. пробел
  2. (
  3. строкаcode
  4. пробел
  5. последовательность цифр
  6. )
  7. пробел

... что не является дурацким -доказательством,поэтому я пытаюсь еще больше ограничить область, ограничив совпадения строками, начинающимися со строки rsync error:.

Оставшийся код printпросто корректирует параметры длины строки, чтобы учесть начальный и конечный текст.

awk '/^rsync error:.* \(code [[:digit:]]+\) / \
  { 
    match($0, " \\(code [[:digit:]]+\\) "); 
    print substr($0, RSTART + 7, RLENGTH - 9) ; 
  }' input
0
04.04.2021, 23:15
2 ответа
  • $(COMMAND)— это синтаксис замены команды . То есть вся команда должна быть заключена в круглые скобки.
  • Используйте больше цитат™ !
  • Не -экспортируемыми переменными являются lower_caseпо соглашению.

Результат:row_count="$(wc --lines "$1")".

2
28.04.2021, 22:54

$1должен находиться внутри вызова $(...)

NROWS=$(wc -l $1)

Синтаксис $(...)в основном означает «запустить команду и вернуть вывод в виде строки», которую затем можно присвоить переменной.

Таким образом, эта команда будет означать «выполнить команду wc -l $1и сохранить результаты в переменной NROWS»

1
28.04.2021, 22:54

Теги

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