Acrescentando saída de comando em loop

2

Estou usando um loop for simples para processar determinados arquivos de entrada e obter a saída em um arquivo. O que estou usando é

for k in ../some_directory/*.txt; 
    do command (containing -i $k -o outputfile.txt); 
done

Agora, cada loop fornece uma saída. Eu quero que a saída seja escrita em um arquivo. Esse loop apenas substitui todos os arquivos anteriores e me fornece vários arquivos outputfile.txt, cada um com a saída de cada loop. Como posso acrescentar o comando a um arquivo? Eu não quero a saída da tela, mas a saída de cada um dos comandos.

NOTA: Não estou falando sobre este ou esta

    
por Vishal Minhas 15.06.2016 / 05:48

3 respostas

2

Você tem duas opções aqui para obter o resultado desejado:

for k in /path/to/*.txt; do
    some_command -i "$k" >> /path/to/output.txt
done

OR

for k in /path/to/*.txt; do
    some_command -i "$k"
done >> /path/to/output.txt

Se o seu programa não gravar na saída padrão e somente gravar em um arquivo especificado com -o , você poderá fazer isso:

for k in /path/to/*.txt; do
    some_command -i "$k" -o /tmp/output.txt
    cat /tmp/output.txt >> /path/to/real_output.txt
done
rm /tmp/output.txt
    
por 15.06.2016 / 08:15
0

Pensei em uma solução mais simples. Eu só precisava dar o mesmo nome de arquivo como saída da entrada. Isso resolveu meu problema, já que todas as alterações são adicionadas e o arquivo de saída antigo é armazenado em backup.

Obrigado

    
por 16.06.2016 / 04:40
0
for name in ../some_directory/*.txt; do
    outfile="$name"-out
    command (containing -i "$name" -o "$outfile"); 
done

Isso construiria o nome do arquivo de saída a partir do nome do arquivo de entrada simplesmente anexando a string -out a ele.

Observe que outfile=out-"$name" não funcionaria, pois $name também contém o caminho para o nome do arquivo.

Você gostaria de preceder uma string para o nome do arquivo, você faz frio

outdir=${name%/*}        # remove filename component from $name
outfile=out-${name##*/}  # remove the path component from $name (and prepend string)

Em seguida, use $outdir/$outfile como o caminho do arquivo de saída.

    
por 06.02.2018 / 08:57