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

时间:2011-03-23 16:39:52

标签: shell unix 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

任何帮助都会很棒。

2 个答案:

答案 0 :(得分:12)

几乎就在那里!这将为您提供grep样式输出,在Vim等编辑器中非常有用,可以导出输出:

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

或者提供您要求的格式:

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

FILENAMEFNR(如NR,但针对该特定文件)是awk中的特殊变量。

或者您当然可以使用grep

grep -n '^.\{80\}' *.cpp

答案 1 :(得分:0)

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