wc -l example.txt >> example.txt
Eu quero contar o número de linhas em example.txt
e acrescentar o resultado ao final deste arquivo. Como posso fazer isso?
Eu tentei:
wc -l > example.txt
wc -l example.txt >> example.txt
Como você sabe, wc -l por padrão, inclui o número do resultado mais o nome do arquivo. Se por algum motivo é melhor ter literalmente apenas o número do resultado, tente isto:
wc -l example.txt | cut -d' ' -f1 >> example.txt
Então, se example.txt começou com apenas 3 linhas, por exemplo:
a
b
c
Depois de executar o acima, use tail
para ver as últimas linhas (nesse caso, poucas linhas para visualizar o arquivo inteiro):
$ tail example.txt
a
b
c
3
wc -l example.txt
, o que fornece a contagem de linha de resultado e o nome do arquivo padrão, por exemplo, 3 example.txt
cut
ajuda a extrair "campos" das linhas -d
é o de definir um delimitador / separador de campos, o que especificamos é ' '
, um espaço. -f1
significa escolher o primeiro campo, de modo que wc
output foi 3 example.txt
o 3
é o primeiro campo >>
acrescenta, por isso, salva o resultado 3
no final do arquivo example.txt
O script a seguir adiciona a contagem de linhas ao final do arquivo, se ainda não estiver lá, mas exclui e substitui se já houver uma contagem de linhas.
Isso permite que você execute este script toda vez que seu (s) arquivo (s) estiver (em) editado sem adicionar várias linhas "Contagem de linhas:".
#! /bin/bash
count=$(wc -l "$1" | cut -d' ' -f1)
tail -1 "$1" | grep -q '^Line count: '
if [ $? ]; then
count=$(( $count - 1 )) # don't count the 'Line count' line
sed -i -e '$ d' "$1"
echo "Line count: $count" >> "$1"
else
echo "Line count: $count" >> "$1"
fi
Para adicionar somente a quantidade de linhas, você pode tentar isso
$ cat example.txt | wc -l >> example.txt
Isso exibirá apenas a quantidade total de linhas no arquivo