O comando cat parece estar adicionando um caractere $ extra no final de cada linha

O comando cat parece estar adicionando um caractere $ extra no final de cada linha

Estou tentando criar um arquivo e parece que o vieditor está adicionando um $no final de cada linha. Não sei o que está causando isso ou como evitar vique 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: catmostra finais de linha com $(como vipoderia 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 trcom a -dopçã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.

informação relacionada