Мой вопрос является продолжением
Как разобрать файл для извлечения трехзначных чисел, хранящихся в «номере группы»
Я пытаюсь объединить в одном сценарии оболочки серию команд, которые
разобрать европейский стандарт для извлечения тестовой последовательности
преобразовать кодировки текста в utf8
обработайте результат с помощью процедуры awk, которая была предоставлена мне в посте выше.
сохранить содержимое в файле назначения
Я предварительно написал сценарий ниже. Я могу добиться только 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
[Add Comment]
кнопкой, чтобы увидеть, что разрешено в комментариях). (В этом случае вам лучше обновить исходный пост).Ответы:
Вы можете сохранить код, переданный
/usr/bin/awk
в переменную и/usr/bin/awk
в отдельную переменную, например так (не проверено):Использование:
Обратите внимание, что я изменил двойные кавычки на одинарные кавычки. В двойных кавычках
$i
подставляется содержимое переменной оболочкиi
. В одинарных кавычках это литерал$i
, которыйawk
ожидает увидеть.Кроме того, вы не избежали двойных кавычек в строке, поэтому
awk
никогда не виделиВместо этого он увидел
Если бы
$1
и$2
были пусты,awk
увиделиВы уверены, что сохранение местоположения команды необходимо? Обычно вы можете зависеть от поиска
awk
в каталоге по пути вашего пользователя. Если вы не используете полный путьawk
, нет причин для параметризацииawk
.источник