${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
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?