awk-如何打印文件前 n 行的字符数?

awk-如何打印文件前 n 行的字符数?

我有一个命令:

$ awk '{ print length($0); }' /etc/passwd

它打印每行的字符数密码文件:

52
52
61
48
81
58
etc.

我怎样才能仅打印前 n 行的字符数?

例如 - 对于前三行,它会给出类似这样的内容:

52
52
61

答案1

awk当读完足够多的行时告知退出:

awk '$0 = length; NR==3 { exit }' /etc/passwd

请注意,此解决方案忽略了空行,但不计算行数。

答案2

直接 Awk 版本(不如@Thor 那么高效),但稍微清晰一些:

awk 'NR <= 3 {print length}' /etc/passwd

答案3

您可以awk仅使用命令来执行它,正如@Thor 和@JJoao (我 +1) 所描述的那样

您可以将awkhead参数-n按行数组合起来,如下所述:

感谢@Maerlyn 建议按此顺序执行:head | awk

例如,使用以下命令你将获得前三行:

head -n3 /etc/passwd | awk '{ print length($0); }' 

头人

-n, --lines=[-]K
    print the first K lines instead of the first 10; with the leading '-', print all but the last K lines of each file 

相关内容