El comando cat parece estar agregando el carácter $ adicional al final de cada línea

El comando cat parece estar agregando el carácter $ adicional al final de cada línea

Estoy intentando crear un archivo y parece que el vieditor agrega un $al final de cada línea. No sé qué está causando esto ni cómo evitarlo vi.

vi file.txt
12345
abcde

cat -v -e file.txt
12345$
abcde$

wc file.txt
2 2 12

No quiero esos $símbolos al final; Rompen mis archivos de automatización que dependen del número de caracteres. ¿Por qué el recuento de palabras muestra 12 caracteres cuando en realidad cada línea tiene 5 caracteres?

VIM versión 7.4.629

Respuesta1

El comentario de @steeldriver es correcto: catmuestra finales de línea con $(como vilo haría si lo preguntara amablemente, usando ":set list"). El carácter adicional por línea es la nueva línea (un carácter invisible al final de cada línea de texto).

Si desea sólo un recuento de losimprimibletexto, puede filtrar el archivo antes de procesarlo con wc, por ejemplo, usando trla -dopción. Aquí hay un script que se considera un ejemplo:

#!/bin/sh
cat $0 |wc
cat $0 | tr -d '\r\n\t' | wc
cat $0 | tr -d '[:cntrl:]' |wc

aunque la última línea posiblemente no sea lo suficientemente portátil para su uso (está enPOSIX, en elextendidosección). Pero se ejecutará en cualquier cosa que probablemente esté utilizando, según las pistas del razonamiento.

información relacionada