我有一个命令:
$ 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) 所描述的那样
您可以将awk
和head
参数-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