Unix: печать имени файла и номера строки каждой строки, которая превышает 80 символов каждого файла в папке - PullRequest
9 голосов
/ 23 марта 2011

Название подводит итог.Я работаю в Unix, Korn Shell.И я пытаюсь напечатать имя файла и номер строки каждой строки, которая превышает 80 символов каждого файла в текущей папке.

Я могу использовать " awk 'длина> 80' * .cpp "чтобы дать всем строкам длиннее 80 символов, но я не могу вытащить номера строк или имена файлов.Я также попытался использовать cat, потому что он учитывает номера строк.

Идея состоит в том, чтобы получить вывод, подобный следующему:

test.cpp line 36
    std::cout << ... line that is over 80 characters

test2.cpp line 40
    Another line that is over 80 characters

Любая помощь будет удивительной.

Ответы [ 2 ]

12 голосов
/ 23 марта 2011

Почти там! Это даст вам вывод в стиле grep, полезный в редакторах, таких как Vim, чтобы иметь возможность перемещаться по выводу:

awk 'length > 80 {print FILENAME "(" FNR "): " $0}' *.cpp

Или указать формат, который вы просили:

awk 'length > 80 {print FILENAME " line " FNR "\n\t" $0}' *.cpp

FILENAME и FNR (как NR, но для этого конкретного файла) являются специальными переменными в awk.

Или вы можете использовать grep, конечно же:

grep -n '^.\{80\}' *.cpp
0 голосов
/ 23 марта 2011
awk 'length > 80 { print FILENAME ":" NR ": " $0 }' *.cpp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...