¿Cómo puedo identificar líneas en archivos de cierta longitud?

¿Cómo puedo identificar líneas en archivos de cierta longitud?

Me gustaría encontrar líneas en mi código que superen cierta longitud. Mi código está en varios archivos. ¿Cuál es una buena manera de hacer esto?

Me gustaría saber los archivos y números de línea; El contenido sería preferible, pero no necesario. El propósito del ejercicio es descubrir cómo dividir las líneas (probablemente manualmente).

Respuesta1

Con grep:

grep -En '.{12}' file

Para líneas de al menos 12 caracteres.

Con varios archivos:

find . -type f -exec grep -En '.{12}' {} +

Algunas grepimplementaciones como GNU greppueden buscar archivos por sí mismas.

grep -rEn '.{12}' .

Pero tenga cuidado con los enlaces simbólicos y otros archivos no regulares.

Respuesta2

solución AWK

awk '{       
if (length($0) > 5)
        print $0;'} yourfile

O, más concisamente:

awk 'length > 5' file

Respuesta3

solución de golpe

#!/bin/bash

count=0

while read; do
    ((++count)) 
    len=${#REPLY}
    if ((len > 80)); then
        echo "Line $count is $len characters."
    fi
done

Entonces, por ejemplo, ./whatever.sh < input.file. Esto no incluye la nueva línea restando 1 de $len; Si eso no es deseable, o si su entrada utiliza terminaciones CRLF, debe realizar los ajustes correspondientes.

Respuesta4

Con perl(por ejemplo), suponiendo que está buscando líneas de más de 80 caracteres:

Para mostrar las líneas:

$ perl -nle 'print if length > 80' your_file

Para mostrar el número de líneas:

$ perl -nle 'print "$.\n" if length > 80' your_file

O ambos:

$ perl -nle 'print "[$.]:  $_\n" if length > 80' your_file

información relacionada