grep,如果它没有换行符,则忽略文件的最后一行

时间:2015-08-20 11:45:12

标签: bash sed grep newline

grep通过其他进程仍在创建的文件时,最后一行通常是不完整的,并且最后还没有换行符。是否可以使用grep(或某些替代方法,如sed)来忽略此行?

我不想只是自动忽略最后一行,因为当完全创建完整并且附加了最终换行符后,最后一行将有效。

2 个答案:

答案 0 :(得分:3)

如果文件没有以换行符结尾

,则此perl将删除最后一行
perl -pe 's/.*// if eof && !/\n/' file

答案 1 :(得分:0)

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

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