Moje pytanie jest kontynuacją
Jak parsować plik w celu wyodrębnienia 3 cyfr liczb przechowywanych w „numerze grupy”
Próbuję zintegrować w jednym skrypcie powłoki serię poleceń, które
przeanalizować europejski standard, aby wyodrębnić sekwencję testową
przekonwertować kodowanie tekstu na utf8
przetworzę wynik za pomocą procedury awk, która została mi dostarczona w powyższym poście.
zapisz zawartość w pliku docelowym
Wstępnie napisałem poniższy skrypt. Jestem w stanie osiągnąć tylko step 1
i step 4
, ale ani step 2
nie step 3
. Zastanawiam się, czy należy utworzyć pliki pośrednie (tymczasowe). Próbowałem zapisać wynik pośrednich kroków w zmiennych, ale bez powodzenia. Każda pomoc byłaby również pomocna w zakresie możliwych błędów i najlepszego sposobu na to.
#!/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
źródło
[Add Comment]
przyciskiem, aby zobaczyć, co jest dozwolone w komentarzach). (W takim przypadku możesz lepiej zaktualizować swój oryginalny post).Odpowiedzi:
Możesz przechowywać kod przekazany
/usr/bin/awk
w zmiennej i/usr/bin/awk
osobnej zmiennej, tak jak to (nietestowane):Stosowanie:
Zauważ, że zmieniłem podwójne cudzysłowy na pojedyncze cudzysłowy. W obrębie podwójnych cudzysłowów
$i
zastępuje się zawartością zmiennej powłokii
. W obrębie pojedynczych cudzysłowów jest to dosłowny element$i
, któryawk
oczekuje.Ponadto nie unikałeś podwójnych cudzysłowów w ciągu, więc
awk
nigdy nie widziałemZamiast tego zobaczył
Jeśli
$1
i$2
były puste,awk
zobaczyłemCzy na pewno konieczne jest zapisanie lokalizacji polecenia? Zwykle możesz polegać na znalezieniu się
awk
w katalogu na ścieżce użytkownika. Jeśli nie użyjesz pełnej ścieżki doawk
, nie ma powodu do parametryzacjiawk
.źródło