![O comando cat parece estar adicionando um caractere $ extra no final de cada linha](https://rvso.com/image/89138/O%20comando%20cat%20parece%20estar%20adicionando%20um%20caractere%20%24%20extra%20no%20final%20de%20cada%20linha.png)
Estou tentando criar um arquivo e parece que o vi
editor está adicionando um $
no final de cada linha. Não sei o que está causando isso ou como evitar vi
que isso aconteça.
vi file.txt
12345
abcde
cat -v -e file.txt
12345$
abcde$
wc file.txt
2 2 12
Não quero esses $
símbolos no final; eles quebram meus arquivos de automação que dependem da contagem de caracteres. Por que a contagem de palavras mostraria 12 caracteres quando na verdade cada linha possui 5 caracteres?
VIM versão 7.4.629
Responder1
O comentário de @steeldriver está correto: cat
mostra finais de linha com $
(como vi
poderia ser se você pedisse com educação, usando ":set list"). O caractere extra por linha é a nova linha (um caractere invisível no final de cada linha de texto).
Se você quiser apenas uma contagem doimprimíveltext, você pode filtrar o arquivo antes de processá-lo com wc
, por exemplo, usando tr
com a -d
opção. Aqui está um script que se considera um exemplo:
#!/bin/sh
cat $0 |wc
cat $0 | tr -d '\r\n\t' | wc
cat $0 | tr -d '[:cntrl:]' |wc
embora a última linha possivelmente não seja portátil o suficiente para seu uso (está emPOSIX, noestendidoseção). Mas ele será executado em qualquer coisa que você provavelmente esteja usando, com base nas pistas do raciocínio.