Soy nuevo en awk y no sé si es posible escribir un script awk que haga esto:
Tengo cientos de archivos de datos que tengo que ordenar. Para cada uno uso el siguiente one-liner:
awk 'ORS=NR%3?" ":"\n" ' file1.tex > file1_sorted.tex
awk 'ORS=NR%3?" ":"\n" ' file2.tex > file2_sorted.tex
...
y obtengo la salida que necesito. Sin embargo, me gustaría tener un script para automatizar esta acción, tomar cada archivo, aplicar la acción y escribir el archivo ordenado correspondiente.
¡Apreciaría tu ayuda!
FNR==1
. =)Puede aplicar los archivos en un bucle for:
O en una línea:
Dado que no especifica qué shell, vaya con el estándar más en su
basename
lugar utilizando la sintaxis específica del shell${file%%.tex}
.fuente
shell
) y ejecutar los comandos anteriores dentro de eso en el indicador. O abra una terminal y ejecute el comando allí. Hay dos formas de especificar scripts (awk, shell, etc.): en la línea de comandos o en un archivo. Suawk
comando en la publicación utiliza el formulario de línea de comandos; mi comando de "una línea" también es un formulario de línea de comandos.Antigua pregunta, pero dado que la última vez que vi una computadora personal de un solo núcleo fue hace una década, puedes usar GNU paralelo
Para resolver la expansión de shell e interpretación de citas
Use el globo apropiado para seleccionar los archivos de entrada. Aquí estoy usando
{.}
para sacar la extensión del nombre de salida porque la agrego después¿Dónde
X
está la cantidad de procesadores que desea usar? Todavía puede usar 1. Esto le daríafile[1-9]_sorted.tex
como salidasfuente