Como anexar contagem de palavras ao arquivo sem adicionar o total

2

Estou executando um script bash no qual estou anexando a contagem de linha dos argumentos, que são arquivos, a outro arquivo. Ele faz isso corretamente, mas eu continuo recebendo uma linha que diz "total X", sendo X a soma de todas as contagens de linha somadas. Como eu adiciono um argumento para acrescentar apenas o total se o número de argumentos estiver acima de algum número, X? Isso é o que eu tenho atualmente:

wc -l $@ >> $1
    
por eltigre 20.01.2015 / 20:29

2 respostas

2

Eu não acho que você possa suprimir o total na forma de vários argumentos.

A maneira mais simples de pensar é manter a forma de um argumento, quando necessário:

if [ "$#" -lt 5 ]
then
    for f in "$@"; do wc -l -- "$f"; done >>"$1"
else
    wc -l "$@" >> "$1"
fi
    
por 20.01.2015 / 23:32
1

Retire a última linha da wc saída se houver poucas linhas para você desejar um total geral.

word_counts=$(wc -l -- "$@")
newline='
'
if [ "$#" -le 9 ]; then
  word_count=${word_count%"$newline"*}
fi
printf '%s\n' "$word_count" >>"$1"

Observe as aspas duplas em "$@" e em torno de outras substituições de variáveis, sem isso, o script quebraria os nomes dos arquivos que contêm espaço em branco (e alguns outros caracteres especiais) sem absolutamente nenhum benefício de redenção. Observe também -- in wc -l -- "$@" , no caso de um nome de arquivo começar com - (sem -- , wc interpretaria esse nome de arquivo como uma opção).

    
por 21.01.2015 / 00:55