Como posso identificar linhas em arquivos com um determinado comprimento

Como posso identificar linhas em arquivos com um determinado comprimento

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 grepimplementaçõ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

informação relacionada