
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 grep
implementaciones como GNU grep
pueden 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