【问题标题】:AWK remove blank linesAWK 删除空行
【发布时间】:2012-05-08 00:37:18
【问题描述】:

/./ 仅删除第一个条件 { print "a"$0 } 的空行,我如何确保脚本删除每个条件的空行?

awk -F, '/./ { print "a"$0 } NR!=1 { print "b"$0 } { print "c"$0 } END { print "d"$0 }' MyFile

【问题讨论】:

标签: linux awk


【解决方案1】:

将以下条件放入第一个条件中,并使用if 语句检查它们,如下所示:

awk -F, '
    /./ { 
        print "a"$0; 
        if (NR!=1) { print "b"$0 } 
        print "c"$0 
    } 
    END { print "d"$0 }
' MyFile

【讨论】:

  • 选择的答案太长了,有更好的一种比如下面这个awk NF file
【解决方案2】:

如果你想忽略所有的空行,把它放在脚本的开头

/^$/ {next}

【讨论】:

    【解决方案3】:

    从文件中删除空行的awk命令:

    awk 'NF > 0' filename
    

    【讨论】:

      【解决方案4】:

      已经提出的答案的简短形式可能如下:

      awk NF file
      

      任何awk 脚本都遵循condition {statement} 语法。如果语句块不存在,awk 将打印整个记录(行)以防condition 不为零。

      awk 中的NF 变量保存行中的字段数。因此,当该行非空时,NF 持有一个正值,触发默认的awk 操作(打印整行)。如果是空行,NF 为 0,不满足条件,所以awk 什么都不做。

      请注意,您甚至不需要引号,因为这 2 个字母的 awk 脚本不包含任何可以被 shell 解释的空格或字符。


      awk '!/^$/' file
      

      ^$ 是空行的正则表达式。需要 2 /awk 了解字符串是正则表达式。 ! 是标准的否定。

      【讨论】:

      • 谢谢@oliv。最佳答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多