Как определить строки в файлах, превышающие определенную длину?

Как определить строки в файлах, превышающие определенную длину?

Я хотел бы найти строки в моем коде, которые превышают определенную длину. Мой код находится в нескольких файлах. Как это сделать?

Я хотел бы знать файлы и номера строк; содержание было бы желательно, но не обязательно. Цель упражнения — выяснить, как разбить строки (вероятно, вручную).

решение1

С grep:

grep -En '.{12}' file

Для строк длиной не менее 12 символов.

С несколькими файлами:

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

Некоторые grepреализации, такие как GNU grep, могут самостоятельно выполнять поиск файлов.

grep -rEn '.{12}' .

Но будьте осторожны с символическими ссылками и другими необычными файлами.

решение2

Решение AWK

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

Или, более кратко:

awk 'length > 5' file

решение3

Решение Bash

#!/bin/bash

count=0

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

Так, например, ./whatever.sh < input.file. Это не включает новую строку путем вычитания 1 из $len; если это нежелательно или ваш ввод использует окончания CRLF, вы должны соответствующим образом скорректировать.

решение4

Например perl, если вы ищете строки длиной более 80 символов:

Для отображения строк:

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

Чтобы отобразить количество строк:

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

Или оба:

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

Связанный контент