проверять количество записей в заголовке

Я пытаюсь написать сценарий, который должен проверять полные записи подробностей, равные Record_count в записи заголовка, если не Record_count ошибку

Пример данных

 0001 HD SAP _AP Distribution 20150615 131723 000003 00000003 detail record 1 detail record 2 detail record 3 

В заголовке 00000003 указано количество записей

2 Solutions collect form web for “проверять количество записей в заголовке”

Использование awk

 awk '! /^detail/ && /.+/ {max=$9} /^detail record/ {count++} END {if (max == count) { print "ok, "max" = "count} else { print "not ok, "max" != "count }}' foo 

Или как скрипт bash

 #!/bin/bash retValue=$(awk '! /^detail/ && /.+/ {max=$9} /^detail record/ {count++} END {if (max != count) { print "1" }}' "$1") if [[ "$retValue" -eq 1 ]]; then exit 1 fi exit 0 

Запустите скрипт с помощью:

 <script_name> <data_file> 

пример

 % cat foo 0001 HD SAP _AP Distribution 20150615 131723 000003 00000003 detail record 1 detail record 2 detail record 3 % awk '! /^detail/ && /.+/ {max=$9} /^detail record/ {count++} END {if (max == count) { print "ok, "max" = "count} else { print "not ok, "max" != "count }}' foo ok, 00000003 = 3 % cat bar 0001 HD SAP _AP Distribution 20150615 131723 000003 00000004 detail record 1 detail record 2 detail record 3 % awk '! /^detail/ && /.+/ {max=$9} /^detail record/ {count++} END {if (max == count) { print "ok, "max" = "count} else { print "not ok, "max" != "count }}' bar not ok, 00000004 != 3 

Сокращенный awk скрипт, ожидающий ввода, отформатированного точно так же, как ваш пример (он [просто] сравнивает число, содержащееся в 9-м поле первой строки, против общего количества строк минус два):

 < in awk 'NR==1 {c=$9} END {if (c==FNR-2) print "ok"; else print "ko"}' 
  • Записывать команды только в файл
  • фоновый gui-процесс в сценарии оболочки
  • Что делает файл filename.txt в сценарии оболочки
  • Помогите мне понять, почему тест $? -eq 0 истинно, даже если я ожидаю, что оно будет ложным
  • как объявить переменные командной строки в сценариях оболочки?
  • Выход из скрипта, который перезапускает приложение
  • Попросив свой сценарий принять аргументы, содержащие пробелы
  • Сортировка фотографий с использованием сценария оболочки
  • Преобразование подчеркивания в PascalCase, т.е. UpperCamelCase
  • Как использовать параметры pass-in для сценария оболочки?
  • Как путь к исполняемому набору, если скрипт находится в PATH
  • Interesting Posts

    Как установить LANG в локали, несмотря на то, что он находится в / etc / default / locale в ubuntu для поддержки Unicode?

    URI устройства для принтера

    Выход PDF с правильными пробелами в примерах кода

    bash 'nounset' на sub-shell / child не заставляет основной скрипт выйти, как обходить это глобально?

    Как отобразить данные сертификата TLS сервера в терминале?

    Масштабирование HiDPI для приложений, которые не знакомы

    В команде `sudo find`, как я могу убедиться, что команда` -exec` запускается как обычный пользователь?

    Удалить конкретный столбец, если он существует в файле CSV

    Просмотр процесса переднего плана с использованием ps

    Файловая система пишет, казалось бы, потерянную

    как я могу установить приглашение для входа как можно скорее в последовательности загрузки?

    Назначение переменной из файла, разделенной разделителем

    поиск темы

    Как определить DNS-сервер в openvpn?

    Разрешение экрана VMWare и Linux Mint 18 (разрешено)

    Linux и Unix - лучшая ОС в мире.