
Gostaria de encontrar linhas em meu código que excedam um determinado comprimento. Meu código está em vários arquivos. Qual é uma boa maneira de fazer isso?
Gostaria de saber os arquivos e os números das linhas; o conteúdo seria preferido, mas não necessário. O objetivo do exercício é descobrir como quebrar as linhas (provavelmente manualmente).
Responder1
Com grep
:
grep -En '.{12}' file
Para linhas com pelo menos 12 caracteres.
Com vários arquivos:
find . -type f -exec grep -En '.{12}' {} +
Algumas grep
implementações, como GNU grep
, podem fazer a localização dos arquivos sozinhas.
grep -rEn '.{12}' .
Mas cuidado com links simbólicos e outros arquivos não regulares.
Responder2
Solução AWK
awk '{
if (length($0) > 5)
print $0;'} yourfile
Ou, de forma mais concisa:
awk 'length > 5' file
Responder3
Solução Bash
#!/bin/bash
count=0
while read; do
((++count))
len=${#REPLY}
if ((len > 80)); then
echo "Line $count is $len characters."
fi
done
Então, por exemplo, ./whatever.sh < input.file
. Isso não inclui a nova linha subtraindo 1 de $len
; se isso não for desejável ou se sua entrada usar terminações CRLF, você deverá ajustar de acordo.
Responder4
Com perl
(por exemplo), supondo que você esteja procurando linhas com mais de 80 caracteres:
Para exibir as linhas:
$ perl -nle 'print if length > 80' your_file
Para exibir o número das linhas:
$ perl -nle 'print "$.\n" if length > 80' your_file
Ou ambos:
$ perl -nle 'print "[$.]: $_\n" if length > 80' your_file