
Я хотел бы найти строки в моем коде, которые превышают определенную длину. Мой код находится в нескольких файлах. Как это сделать?
Я хотел бы знать файлы и номера строк; содержание было бы желательно, но не обязательно. Цель упражнения — выяснить, как разбить строки (вероятно, вручную).
решение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