使用 awk 命令计算没有空行的字段

count the fields without empty line using awk command

safwanpaloli@hello:~/linx$ cat 1.txt 

Name    age address email
safwan  26  india   safwanp@gmail.com
rashi   24  India   rashi@gmail.com
shanif  25  India   shanif@gmail.com
pradeep 25  India   pradeep@gmil.com
safwanpaloli@hello:~/linx$ 

显示所有文件内容的行号

awk '{print NR,[=13=]}'

输出是

1 
2 Name  age address     email
3 safwan    26  india   safwanp@gmail.com
4 rashi     24  India   rashi@gmail.com
5 shanif    25  India   shanif@gmail.com
6 pradeep   25  India   pradeep@gmil.com

预期结果是


1 Name  age address     email
2 safwan    26  india   safwanp@gmail.com
3 rashi     24  India   rashi@gmail.com
4 shanif    25  India   shanif@gmail.com
5 pradeep   25  India   pradeep@gmil.com

您可以检查 NF 的值是否大于 0 并使用计数器变量:

$ awk 'NF{print ++c,[=10=]}' file

输出:

1 Name    age address email
2 safwan  26  india   safwanp@gmail.com
...

如果第一行真的是空的(即里面没有 space),你可以使用 nl file。它将打印空行但不对其编号。

以上 nl awk 功能(空行输出但未编号):

$ awk '{print (NF?++c:""),[=12=]}' file

输出:


1 Name    age address email
2 safwan  26  india   safwanp@gmail.com
3 rashi   24  India   rashi@gmail.com
...

这将打印非空行及其计数。要计算在内,该行必须包含至少一个非白色space字符。

awk '!="" {print ++c,[=10=]}'

这很相似,但只跳过完全个空行。例如。仅包含一个 space 的行仍会被计算在内。

awk '/./ {print ++c,[=11=]}'

您还可以使用以下 greps 之一删除空行:

grep '[^[:space:]]'

grep .