【问题标题】:To remove blank lines in data set删除数据集中的空行
【发布时间】:2012-01-06 06:28:55
【问题描述】:

我需要一个使用 sed、awk 或 perl 的单行来从我的数据文件中删除空白行。我文件中的数据如下所示 -

Aamir
Ravi 

Arun


Rampaul
Pankaj

Amit

Bianca

这些空白在我的数据文件中随机并且出现在任何地方。有人可以建议一个单行从我的数据集中删除这些空白行。

【问题讨论】:

    标签: perl shell sed awk


    【解决方案1】:

    对于 perl,它与 sed、awk 或 grep 一样简单。

    $ cat tmp/tmpfile 阿米尔 拉维

    阿伦

    朗保尔 潘卡伊

    阿米特

    比安卡

    $ perl -i -pe 's{^\s*\n$}{}' tmp/tmpfile

    $ cat tmp/tmpfile 阿米尔 拉维 阿伦 朗保尔 潘卡伊 阿米特 比安卡

    【讨论】:

    • 这里的名称以空格分隔符显示。但在 shell 中,名称显示在另一个下方,没有任何空行。
    【解决方案2】:

    Perl 解决方案:

    perl -ni.old -e 'print unless /^\s*$/' file
    

    ...创建原始文件的备份副本,后缀为'.old'

    【讨论】:

      【解决方案3】:

      Perl 解决方案。从命令行。

      $ perl -i.bak -n -e'print if /\S/' INPUT_FILE
      

      就地编辑文件并创建原始文件的备份。

      【讨论】:

      • 谢谢。我正在寻找一种可以就地编辑的 perl 单行器。
      • 删除.bak,这将在没有备份的情况下就地编辑。
      【解决方案4】:

      AWK 解决方案:

      这里我们遍历输入文件以检查它们是否设置了任何字段。 NF 是 AWK 的内置变量,设置为字段数。如果该行为空,则不设置 NF。在这一行中,我们测试 NF 是否为真,即设置为一个值。如果是,那么我们打印该行,当模式为真时,这在 AWK 中是隐含的。

      awk 'NF' INPUT_FILE
      

      SED 解决方案:

      此解决方案类似于作为答案提到的解决方案。正如语法所示,我们没有打印任何空白行。

      sed -n '/^$/!p' INPUT_FILE
      

      【讨论】:

        【解决方案5】:

        你可以这样做:

         sed -i.bak '/^$/d' file
        

        【讨论】:

          【解决方案6】:

          它可以通过多种方式完成。

          例如使用 awk:

          awk '$0' yourFile
          

          或 sed:

          sed '/^$/d' yourFile
          

          或grep:

          grep -v '^$' yourFile
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-10-25
            • 2015-06-17
            • 2011-09-02
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多