Eu sou novo no awk e não sei se é possível escrever um script do awk que faça isso:
Eu tenho centenas de arquivos de dados que tenho que classificar. Para cada um, eu uso a seguinte linha:
awk 'ORS=NR%3?" ":"\n" ' file1.tex > file1_sorted.tex
awk 'ORS=NR%3?" ":"\n" ' file2.tex > file2_sorted.tex
...
e recebo a saída que preciso. No entanto, eu gostaria de ter um script para automatizar essa ação, pegando cada arquivo, aplicando a ação e escrevendo o arquivo classificado correspondente.
Gostaria muito de receber sua ajuda!
FNR==1
faz. =)Você pode aplicar os arquivos em um loop for:
Ou em uma linha:
Como você não especifica qual shell,
basename
use o mais padrão, usando a sintaxe específica do shell${file%%.tex}
.fonte
shell
) e executar os comandos acima dentro do prompt. Ou abra um terminal e execute o comando lá. Há duas maneiras de especificar scripts (awk, shell, etc): na linha de comando ou em um arquivo. Seuawk
comando na postagem usa o formulário da linha de comandos; meu comando "uma linha" também é um formulário de linha de comando.Pergunta antiga, mas como a última vez que vi um computador pessoal com um único núcleo foi uma década atrás, você pode usar o gnu paralelo
Para resolver a expansão shell e interpretação de citações
Use a glob adequada para selecionar os arquivos de entrada. Aqui estou usando
{.}
para remover a extensão do nome da saída, porque depois a anexoonde
X
está o número de processadores que você deseja usar, ainda assim você pode usar 1. Isso forneceriafile[1-9]_sorted.tex
como saídasfonte