Por algum motivo, esse script gera três arquivos para cada original, em vez de um.
Deve ter feito algum erro trivial - eu sou novo nisso!
Muito obrigado se alguém pudesse explicar por que isso acontece.
Roteiro:-
for f in *.txt
do
noOfRows=$(cat $f | wc -l)
relevantRows=$(expr $noOfRows - 5)
head -n $relevantRows $f | tee ${f%.txt}-Amended.txt
done
Resultado do comando ls: -
E12-5_F2_NEG-Amended-Amended-Amended.txt E12-5_M3_POS-Amended-Amended-Amended.txt
E12-5_F2_NEG-Amended-Amended.txt E12-5_M3_POS-Amended-Amended.txt
E12-5_F2_NEG-Amended.txt E12-5_M3_POS-Amended.txt
E12-5_F2_NEG.txt E12-5_M3_POS.txt
E12-5_F2_POS-Amended-Amended-Amended.txt E12-5_M4_NEG-Amended-Amended-Amended.txt
E12-5_F2_POS-Amended-Amended.txt E12-5_M4_NEG-Amended-Amended.txt
E12-5_F2_POS-Amended.txt E12-5_M4_NEG-Amended.txt
E12-5_F2_POS.txt E12-5_M4_NEG.txt
E12-5_F5_NEG-Amended-Amended-Amended.txt E12-5_M4_POS-Amended-Amended-Amended.txt
E12-5_F5_NEG-Amended-Amended.txt E12-5_M4_POS-Amended-Amended.txt
E12-5_F5_NEG-Amended.txt E12-5_M4_POS-Amended.txt
E12-5_F5_NEG.txt E12-5_M4_POS.txt
E12-5_F5_POS-Amended-Amended-Amended.txt E12-5_M7_NEG-Amended-Amended-Amended.txt
E12-5_F5_POS-Amended-Amended.txt E12-5_M7_NEG-Amended-Amended.txt
E12-5_F5_POS-Amended.txt E12-5_M7_NEG-Amended.txt
E12-5_F5_POS.txt E12-5_M7_NEG.txt
E12-5_M3_NEG-Amended-Amended-Amended.txt E12-5_M7_POS-Amended-Amended-Amended.txt
E12-5_M3_NEG-Amended-Amended.txt E12-5_M7_POS-Amended-Amended.txt
E12-5_M3_NEG-Amended.txt E12-5_M7_POS-Amended.txt
E12-5_M3_NEG.txt E12-5_M7_POS.txt
Muito obrigado, Adam
$(())
maneira é POSIX, e é realmente olet
método que é uma adição de Bash não padrão.expr
também é menos definido em função do que o POSIX$(())
construção, então o último deve ser preferido se a portabilidade for necessária (o que geralmente é uma boa diretriz para roteiros bem formados e evitando maus hábitos). Veja por exemplo wiki.bash-hackers.org/commands/builtin/… .