grep,如果没有换行符则忽略文件的最后一行
grep, ignoring the last line of the file if it does not have a newline
当 grep
浏览仍在由其他进程创建的文件时,最后一行通常不完整并且末尾还没有换行符。是否可以使用 grep
(或 sed
之类的替代方法)忽略此行?
我不想总是自动忽略最后一行,因为当完全创建完整并附加最后的换行符时,最后一行将有效。
如果文件没有以换行符结尾,这个 perl 将删除最后一行
perl -pe 's/.*// if eof && !/\n/' file
您可以使用 tail
和 wc
测试文件是否以换行符结尾。如果没有,请删除带有 head
的最后一行:
if [[ $(tail -c1 infile | wc -l) != 1 ]]; then
mv infile infile.tmp
head -n-1 infile.tmp > infile
fi
当 grep
浏览仍在由其他进程创建的文件时,最后一行通常不完整并且末尾还没有换行符。是否可以使用 grep
(或 sed
之类的替代方法)忽略此行?
我不想总是自动忽略最后一行,因为当完全创建完整并附加最后的换行符时,最后一行将有效。
如果文件没有以换行符结尾,这个 perl 将删除最后一行
perl -pe 's/.*// if eof && !/\n/' file
您可以使用 tail
和 wc
测试文件是否以换行符结尾。如果没有,请删除带有 head
的最后一行:
if [[ $(tail -c1 infile | wc -l) != 1 ]]; then
mv infile infile.tmp
head -n-1 infile.tmp > infile
fi