Unix:打印文件夹中每个文件超过80个字符的每行的文件名和行号

car*_*uen 9 unix shell scripting

标题总结了它.我在Unix,korn shell工作.我正在尝试打印当前文件夹中每个文件超过80个字符的每行的文件名和行号.

我可以使用" awk'length> 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
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒.

Joh*_*web 12

差不多了!这将为您提供一种grep风格的输出,在Vim等编辑器中非常有用,可以导出输出:

awk 'length > 80 {print FILENAME "(" FNR "): " $0}' *.cpp
Run Code Online (Sandbox Code Playgroud)

或者提供您要求的格式:

awk 'length > 80 {print FILENAME " line " FNR "\n\t" $0}' *.cpp
Run Code Online (Sandbox Code Playgroud)

FILENAMEFNR(比如NR,但对于那个特定的文件)是特殊的变量awk.

或者你可以使用grep它自己,当然:

grep -n '^.\{80\}' *.cpp
Run Code Online (Sandbox Code Playgroud)