Meine Frage ist eine Fortsetzung von
Analysieren einer Datei zum Extrahieren von 3-stelligen Nummern in einer "Gruppennummer"
Ich versuche, in ein einzelnes Shell-Skript eine Reihe von Befehlen zu integrieren, die
Analysieren Sie eine europäische Norm, um eine Testsequenz zu extrahieren
wandle die Textcodierungen in utf8 um
Verarbeiten Sie das Ergebnis mit der awk-Routine, die Sie mir auf dem obigen Post gegeben haben.
Speichern Sie den Inhalt in einer Zieldatei
Ich habe das folgende Skript vorläufig geschrieben. Ich kann nur step 1
und erreichen step 4
, aber weder step 2
noch step 3
. Ich frage mich, ob (temporäre) Zwischendateien erstellt werden sollten. Ich habe versucht, die Ausgabe von Zwischenschritten in Variablen zu speichern, aber ohne Erfolg. Jede Hilfe wäre auch hilfreich in Bezug auf mögliche Fehler und den besten Weg, dies zu tun.
#!/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
quelle
[Add Comment]
Schaltfläche, um zu sehen, was in Kommentaren zulässig ist). (In diesem Fall ist es möglicherweise besser, den ursprünglichen Beitrag zu aktualisieren.)Antworten:
Sie können den übergebenen Code
/usr/bin/awk
in einer Variablen und/usr/bin/awk
in einer separaten Variablen wie folgt speichern (ungetestet):Verwendung:
Beachten Sie, dass ich die doppelten Anführungszeichen in einfache Anführungszeichen geändert habe. Wird in doppelten Anführungszeichen
$i
durch den Inhalt der Shell-Variablen ersetzti
. Innerhalb von einfachen Anführungszeichen handelt es sich um ein Literal$i
, dasawk
zu sehen ist.Außerdem haben Sie die doppelten Anführungszeichen in der Zeichenfolge nicht ignoriert, also
awk
nie gesehenStattdessen sah es
Wenn
$1
und$2
waren leer,awk
sahSind Sie sicher, dass der Befehlsspeicherort gespeichert werden muss? Sie können sich normalerweise darauf verlassen, dass Sie sich
awk
in einem Verzeichnis im Pfad Ihres Benutzers befinden. Wenn Sie nicht den vollständigen Pfad zu verwendenawk
, gibt es keinen Grund zum Parametrierenawk
.quelle