bam*_*uni 10 command-line awk text-processing
我有一个命令:
$ awk '{ print length($0); }' /etc/passwd
Run Code Online (Sandbox Code Playgroud)
它打印passwd文件中每一行的字符数:
52
52
61
48
81
58
etc.
Run Code Online (Sandbox Code Playgroud)
如何仅打印前 n 行的字符数?
例如 - 对于前 3 行,它会给出如下内容:
52
52
61
Run Code Online (Sandbox Code Playgroud)
Tho*_*hor 17
awk当读到足够多的行时告诉退出:
awk '$0 = length; NR==3 { exit }' /etc/passwd
Run Code Online (Sandbox Code Playgroud)
请注意,此解决方案会忽略空行,但不会忽略行数。
小智 14
一个直接的 Awk 版本(不如@Thor 的高效),但稍微清晰一点:
awk 'NR <= 3 {print length}' /etc/passwd
Run Code Online (Sandbox Code Playgroud)
你可以awk只用命令来执行它,正如@Thor 和@JJoao(我的+1)所描述的那样
您可以结合awk和head参数-n后跟行数,如下所述:
感谢@Maerlyn 建议按以下顺序执行: head | awk
例如,您将使用以下方法获得前 3 行:
head -n3 /etc/passwd | awk '{ print length($0); }'
Run Code Online (Sandbox Code Playgroud)
-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
Run Code Online (Sandbox Code Playgroud)