Как интегрировать многострочный awk-скрипт в сценарий оболочки

Я новичок в сценариях оболочки, и мой вопрос является продолжением

Как проанализировать файл для извлечения 3 цифр, хранящихся в «групповом номере»,

Я пытаюсь интегрировать в один сценарий оболочки ряд команд, которые

  1. проанализировать европейский стандарт для извлечения тестовой последовательности

  2. конвертировать текстовые кодировки в utf8

  3. обработайте результат с помощью процедуры awk, которая была предоставлена ​​мне в сообщении выше.

  4. сохранить содержимое в целевом файле

Я предварительно написал сценарий ниже. Я могу достичь только step 1 и step 4 , но ни step 2 ни step 3 . Интересно, должен ли быть создан промежуточный (временный) файл (ы). Я попытался сохранить вывод промежуточных шагов в переменные, но безуспешно. Любая помощь также могла бы помочь в возможных ошибках и наилучшем способе сделать это.

 #!/bin/bash # creating the Latex code for a test procedure awkcommand= "/usr/bin/awk ' $1 == "Group" {printf("\\section{%s %d}\n", $1, $2); next} { title = sep = "" for (i=1; i<=NF; i++) if ($i ~ /^[0-9][0-9][0-9]$/) { printf("\\subsection{%s} \n\\TestDetails{%d}\n", title, $i) break } else { title = title sep $i sep = FS } } ' " sourcefolder="/Users/yves/Desktop/Test-folder-parsing/" sourcefile="NFEN3545-001.pdf" destfile="Latex-code.tex" destfolder=$sourcefolder destinationfilepath=${destfolder}${destfile} extractioncmd="/usr/local/bin/pdftotext -layout -f 54 -l 54" modifier=" -" #textencodingcmd="/usr/bin/iconv -f L1 -t UTF-8" # Needed but not used ${extractioncmd} ${sourcefolder}${sourcefile} ${modifier} > $destinationfilepath exit 0 

  • Есть ли способ слушать процесс?
  • Почему этот скрипт работает на Ubuntu, а не на Debian?
  • Пакетное извлечение и повторная упаковка .RAR-файлы
  • автоматизация конфигурации CentOS 7 с использованием сценариев оболочки
  • Прекратите использование сценария bash, если соединение SSH невозможно сделать невзаимодействующим
  • Как извлечь строки, начинающиеся с шаблона и фрагментов между двумя шаблонами?
  • Как поместить выходные строки в grep в on-line?
  • Сценарий оболочки декодирования Url
  • One Solution collect form web for “Как интегрировать многострочный awk-скрипт в сценарий оболочки”

    Вы можете сохранить код, переданный в /usr/bin/awk в переменной, и /usr/bin/awk в отдельной переменной, подобной так (untested):

     awk=/usr/bin/awk awkcommand=' $1 == "Group" {printf("\section{%s %d}\n", $1, $2); next} { title = sep = "" for (i=1; i<=NF; i++) if ($i ~ /^[0-9][0-9][0-9]$/) { printf("\subsection{%s} \n\TestDetails{%d}\n", title, $i) break } else { title = title sep $i sep = FS } } ' 

    Применение:

     $awk "$awkcommand" 

    Обратите внимание, что я сменил двойные кавычки на одинарные кавычки. В двойных кавычках $i заменяется содержимым переменной оболочки i . В одинарных кавычках это буквальный $i , что и ожидает awk .

    Кроме того, вы не избежали двойных кавычек в строке, поэтому awk никогда не видел

     $1 == "Group" {printf("\section{%s %d}\n", $1, $2); next} 

    Вместо этого он увидел

     <contents of shell $1> == Group {printf(\section{%s %d}\n, <contents of shell $1>, <contents of shell $2>); next} 

    Если $1 и $2 были пустыми, awk увидел

      == Group {printf(\section{%s %d}\n, , ); next} 

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

    Interesting Posts

    Пример добавления

    Выполнение команд по нескольким файлам и предоставление каждому из них уникального имени

    Правильный путь для динамического переноса портов ssh

    Проблема с скриптом чтения строки в Cygwin

    Хорошая практика заключается в том, чтобы создать фоновое задание в сценарии инициализации, если процесс не может самоопределиться?

    Как touch -t работает внутри?

    Есть ли какие-либо преимущества использования .qcow2 над .img и который рекомендуется для создания виртуальной машины?

    Файл конфигурации SSH + скриптовый скрипт

    Редактируйте файл с помощью скрипта, но сохраняйте теги osx

    Заменить строку в первом столбце

    Как сбросить пароль кошелька KDE в Linux?

    Является ли NTFS под linux способным сохранить файл linux с настройками chown и chmod?

    Как использовать параметр «-v» во времени?

    Нет видео с проигрывателем HTML 5 на YouTube под Iceweasel

    tmux вызывает смелые шрифты в vim

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