【问题标题】:count the fields without empty line using awk command使用 awk 命令计算没有空行的字段
【发布时间】:2022-01-13 02:54:24
【问题描述】:
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,$0}'

输出是

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

【问题讨论】:

    标签: awk


    【解决方案1】:

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

    $ awk 'NF{print ++c,$0}' file
    

    输出:

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

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

    nl 上面带有 awk 的功能(空行输出但未编号):

    $ awk '{print (NF?++c:""),$0}' file
    

    输出:

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

    【讨论】:

      【解决方案2】:

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

      awk '$1!="" {print ++c,$0}'
      

      这是类似的,但只有 完全 空行被跳过。例如。只包含一个空格的行仍然会被计算在内。

      awk '/./ {print ++c,$0}'
      

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

      grep '[^[:space:]]'
      
      grep .
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多