Linux 判断并修复文件没有结束行(noeol)
有些配置文件或者脚本有时候会出现最后一行没有结束符的情况,如下,[root@CentOS-7-2 /home]# cat noeol.txt/var/log/my.log {size 10Mmissingokcopytruncate}[root@CentOS-7-2 /home]#最后一行和提示符处在同一行。这样会导致配置文件...
·
有些配置文件或者脚本有时候会出现最后一行没有结束符的情况,如下,
[root@CentOS-7-2 /home]# cat noeol.txt
/var/log/my.log {
size 10M
missingok
copytruncate
}[root@CentOS-7-2 /home]#
最后一行和提示符处在同一行。这样会导致配置文件格式错误,如果是脚本,则无法执行最后一条语句,因此肯定是有问题的。
目前尚无专门用于处理该问题的命令,可以使用diff命令比较后出现的关键字No newline来辅助判断。先看下使用diff命令比较后的差异内容,
[root@CentOS-7-2 /home]# diff /dev/null noeol.txt
0a1,5
> /var/log/my.log {
> size 10M
> missingok
> copytruncate
> }
\ No newline at end of file
[root@CentOS-7-2 /home]#
可见,对于没有结束行的文件会有特别提示,因此可以使用以下命令鉴别,
if diff /dev/null ${file} | tail -1 | grep '^\\ No newline' > /dev/null;then
echo "no eol"
fi
至于修复的话,直接往文件里写入空字符即可,如下,
if diff /dev/null ${file} | tail -1 | grep '^\\ No newline' > /dev/null;then
echo >> ${file}
fi
echo会自动在文件最后追加结束符。
更多推荐
已为社区贡献5条内容
所有评论(0)