Un script que imprime las líneas de un archivo con su longitud

Un script que imprime las líneas de un archivo con su longitud

Estoy trabajando en una tarea en la que me piden que cree un script que obtenga un nombre de archivo como parámetro y luego se supone que debe imprimir todas las líneas del archivo más su longitud al final, por ejemplo: leche de plátano = >leche de plátano 11 unix y linux =>unix y linux 14 macbook pro =>macbook pro 11

Respuesta1

Esto imprime cada línea en un archivo seguida de la longitud de la línea (en términos de número de caracteres sin incluir el delimitador de línea en implementaciones de awk compatibles con POSIX, aunque algunas le darán el número de bytes en su lugar).

<FOO awk '{print $0,length}'

Aunque no estoy seguro si eso es lo que estás preguntando.

Respuesta2

La awksolución es la mejor, pero si no quieres usar awk, aquí tienes algunas alternativas:

while IFS= read -r line
do
        printf "%s %d\n" "$line" "${#line}"
done < "$1"
while IFS= read -r line
do
        printf "%s %d\n" "$line" "$(expr "$line" : '.*')"
done < "$1"
while IFS= read -r line
do
        printf "%s %d\n" "$line" "$(printf "%s" "$line" | wc -c)"
done < "$1"
while IFS= read -r line
do
        printf "%s %d\n" "$line" "$(wc -c <<< "$line")"
done < "$1"

La wc -c <<< "$line"variante dará números uno más altos que los demás, porque incluye una nueva línea.

Respuesta3

No estoy exactamente seguro de lo que estás buscando. El siguiente script debería proporcionar exactamente el resultado que desea.

#!/bin/bash
cat $1
cat $1 | wc -m

información relacionada