Renomeia o nome do arquivo no loop

0

Eu tenho um loop e quero selecionar algumas colunas com awk e do sort e, em seguida, renomeio meu arquivo de saída com um novo nome. Meu awk e sort estão funcionando bem, mas eu quero pegar um nome de arquivo com um nome diferente do meu arquivo de entrada e eu não fui capaz de fazê-lo. Eu tenho diretórios diferentes para executar esse loop: a, b e c. O comando é:

for i in a b c 
do
    (cd $i/; for i in *_test2.txt; do awk '{print $2"_"$1}' $i | sort -V > ${i%.txt}3.txt; done)
done

Eu gostaria de mudar o nome do arquivo para *_test3.txt , mas no meu loop eu terei a saída como *_test23.txt Como posso fazer isso?

    
por Paul 09.02.2017 / 17:24

1 resposta

0

${i%.txt} apenas removerá a extensão .txt do nome de arquivo $i . Para pegar um caractere extra, use ${i%?.txt} :

for i in {a,b,c}/*_test2.txt; do
  awk '{ print $2 "_" $1 }' "$i" | sort -V -o "${i%?.txt}3.txt"
done
    
por 09.02.2017 / 17:57

Tags