【问题标题】:grep, ignoring the last line of the file if it does not have a newlinegrep,如果文件没有换行符,则忽略文件的最后一行
【发布时间】:2015-08-20 11:45:11
【问题描述】:

greping 通过其他进程仍在创建的文件时,最后一行通常是不完整的,并且末尾还没有换行符。 grep(或sed之类的替代方法)是否可以忽略这一行?

我不想总是自动忽略最后一行,因为当完整创建完整并附加最后一个换行符时,最后一行才有效。

【问题讨论】:

    标签: bash sed grep newline


    【解决方案1】:

    如果文件不以换行符结尾,此 perl 将删除最后一行

    perl -pe 's/.*// if eof && !/\n/' file
    

    【讨论】:

      【解决方案2】:

      您可以使用tailwc 来测试文件是否以换行符结尾。如果没有,请删除带有head 的最后一行:

      if [[ $(tail -c1 infile | wc -l) != 1 ]]; then 
          mv infile infile.tmp
          head -n-1 infile.tmp > infile
      fi
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-09
        • 1970-01-01
        • 2013-10-19
        • 1970-01-01
        • 2012-06-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多