Um script que imprime as linhas de um arquivo com seu comprimento

Um script que imprime as linhas de um arquivo com seu comprimento

Estou trabalhando em uma tarefa que me pede para criar um script que recebe um nome de arquivo como parâmetro e então deve imprimir todas as linhas do arquivo mais seu comprimento no final delas, por exemplo: banana milk = >banana milk 11 unix e linux =>unix e linux 14 macbook pro =>macbook pro 11

Responder1

Isso imprime cada linha em um arquivo seguida pelo comprimento da linha (em termos de número de caracteres, não incluindo o delimitador de linha em implementações awk compatíveis com POSIX, embora algumas forneçam o número de bytes).

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

não tenho certeza se é isso que você está perguntando.

Responder2

A awksolução é a melhor, mas, se você não quiser usar o awk, aqui vão algumas 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"

A wc -c <<< "$line"variante fornecerá números um acima dos outros, porque inclui uma nova linha.

Responder3

Não tenho certeza do que você está procurando. O script a seguir deve fornecer exatamente a saída desejada.

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

informação relacionada