标题概括了一切。我在 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
任何帮助都会很棒。
最佳答案
快到了!这将为您提供 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
关于shell - Unix:打印文件夹中每个文件的文件名和每行超过80个字符的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5408670/