Mi pregunta es una continuación de
Cómo analizar un archivo para extraer números de 3 dígitos guardados en un "número de grupo"
Estoy tratando de integrar en un solo script de shell una serie de comandos que
analizar un estándar europeo para extraer una secuencia de prueba
convertir las codificaciones de texto a utf8
procesar el resultado con la rutina awk que se me proporcionó en la publicación anterior.
guardar el contenido en un archivo de destino
He escrito tentativamente el guión a continuación. Soy capaz de lograr solo step 1
y step 4
, pero ni step 2
tampoco step 3
. Me pregunto si se deben crear archivos intermedios (temporales). He tratado de almacenar la salida de los pasos intermedios en variables, pero sin éxito. Cualquier ayuda también sería útil con respecto a posibles errores y la mejor manera de hacerlo.
#!/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
fuente
[Add Comment]
botón para ver lo que está permitido en los comentarios). (En ese caso, es mejor que actualices tu publicación original).Respuestas:
Puede almacenar el código pasado
/usr/bin/awk
en una variable y/usr/bin/awk
en una variable separada como esta (sin probar):Uso:
Tenga en cuenta que cambié las comillas dobles a comillas simples. Entre comillas dobles,
$i
se sustituye por el contenido de la variable de shelli
. Dentro de las comillas simples, es un literal$i
, que es lo queawk
espera ver.Además, no escapaba de las comillas dobles dentro de la cadena, por lo que
awk
nunca vioEn cambio, vio
Si
$1
y$2
estuviera vacío,awk
vio¿Estás seguro de que es necesario almacenar la ubicación del comando? Por lo general, puede confiar en buscar
awk
dentro de un directorio en la ruta de su usuario. Si no usa la ruta completa aawk
, no hay razón para parametrizarawk
.fuente