linux如何在文件末尾添加空行,如何在文件末尾添加换行符?
尽管它不能直接回答问题,但这是我编写的一个相关脚本,用于检测未以换行符结尾的文件。非常快。
find.-type f|# sort | # sort file names if you like/usr/bin/perl-lne'
open FH, "
$pos = sysseek FH, 0, 2; # seek to EOF
if (!defined $pos) { print " error: $_"; next }
if ($pos == 0) { print " empty: $_"; next }
$pos = sysseek FH, -1, 1; # seek to last char
if (!defined $pos) { print " error: $_"; next }
$cnt = sysread FH, $c, 1;
if (!$cnt) { print " error: $_"; next }
if ($c eq "\n") { print " EOL: $_"; next }
else { print "no EOL: $_"; next }
'
perl脚本从stdin读取(可选排序的)文件名列表,并为每个文件读取最后一个字节,以确定文件是否以换行符结尾。它非常快,因为它避免了读取每个文件的全部内容。对于每个读取的文件,它输出一行,如果发生某种错误,则以“ error:”为前缀,如果文件为空(不以换行符结尾!),则以“ empty:”开头;“ EOL:”(“行”),如果文件以换行符结尾,则为“ no EOL:”(如果文件不以换行符结尾)。
注意:该脚本不处理包含换行符的文件名。如果您使用的是GNU或BSD系统,则可以通过添加-print0来查找,-z进行排序以及-0到perl来处理所有可能的文件名,如下所示:
find.-type f-print0|sort-z|/usr/bin/perl-ln0e'
open FH, "
$pos = sysseek FH, 0, 2; # seek to EOF
if (!defined $pos) { print " error: $_"; next }
if ($pos == 0) { print " empty: $_"; next }
$pos = sysseek FH, -1, 1; # seek to last char
if (!defined $pos) { print " error: $_"; next }
$cnt = sysread FH, $c, 1;
if (!$cnt) { print " error: $_"; next }
if ($c eq "\n") { print " EOL: $_"; next }
else { print "no EOL: $_"; next }
'
当然,您仍然必须想出一种在输出中使用换行符对文件名进行编码的方法(留给读者练习)。
如果需要,可以对输出进行过滤,以将换行符添加到那些没有换行符的文件中,最简单的做法是
echo>>"$filename"
缺少最后一个换行符可能会导致脚本中的错误,因为在读取此类文件时,某些版本的Shell和其他实用程序将无法正确处理缺少的最后一个换行符。
以我的经验,缺少最后一个换行符是由使用各种Windows实用程序来编辑文件引起的。我从未见过vim在编辑文件时会导致缺少最后的换行符,尽管它会报告此类文件。
最后,还有一些更短(但更慢)的脚本,它们可以循环其文件名输入以打印不以换行符结尾的那些文件,例如:
/usr/bin/perl-ne'print "$ARGV\n" if /.\z/'--FILE1 FILE2...
linux如何在文件末尾添加空行,如何在文件末尾添加换行符?相关推荐
- linux删除最后一个换行符,如果它是文件中的最后一个字符,如何删除换行符?...
perl -pe 'chomp if eof' filename >filename2 或者,编辑文件到位: perl -pi -e 'chomp if eof' filename [编者注: ...
- 文件读写r,rb,w,wb区别(对于换行符的处理)
windows: 当用'w'方式写文件时,将\n变成两个字符\r\n写入文件. 当用'r'方式读文件时,将文件里的\r\n读入为\n. 使用'rb','wb'方式读写则不会发生上述转换 Linux: ...
- linux中删除文件的空行,Linux 删除文件中的空行
Linux 删除文件中的空行 相信很多朋友在日常的开发过程中经常要处理一些文本, 其中很重要的一部分就是要删除文本中的空行, 例如下面的文本 (我现在的开发环境是 HP-UX , 在 Linux 环境 ...
- linux shell sed 添加空行
一.每行前后添加空行 1.每行后面添加一行空行: sed G tmp 每行前面添加一行空行: sed '{x;p;x;}' tmp 2.每行后面添加两行空行: sed 'G;G' tmp 每行前面添加 ...
- vim移除自动添加的换行符
文章作者:Tyan 博客:noahsnail.com | CSDN | 简书 1. 引言 在使用vim编辑文件时,默认情况下,vim会在文件末尾自动添加换行符(endofline).如果需要移 ...
- Python 三种读文件方法read(), readline(), readlines()及去掉换行符\n
Python 三种读文件方法read(), readline(), readlines()及去掉换行符\n 首先, 让我们看下数据demo.txt, 就两行数据. 35durant teamGSW 1 ...
- python只读打开文件_关于python:只读文件的第一行?
如何使用python只得到文件的第一行作为字符串? 如果您已经阅读了文件("在阅读了文件之后"),那么您已经阅读了第一行!(假设至少有一行.) 请注意,现在所说的问题与原来的含义不 ...
- windows下回车换行符在Linux下显示^M问题
背景: win下的PHP文件打包,在Linux下解压后,在git status 时,显示发生修改,但并没有修改,查看文件会发现这种字符^M其实就是因为换行符的原因 ,Windows换行符和Linux换 ...
- Git下载代码到Windows再拷贝到Linux下编译时要关闭换行符自动转换
Git下载代码到Windows再拷贝到Linux下编译时要关闭换行符自动转换 一.各操作系统下文件换行符 二.TortoiseGit下载Github代码关闭文件换行符 三.示例说明 1.开启换行符自动 ...
最新文章
- JSONOBject的fluentPut(key,value)方法:可链式设置元素
- jar包冲突与inode
- golang超时控制
- iOS开发之NSString和UTF-8间的转换
- (12.05)Java小知识!
- 课程设计方案模板MySQL_MYSQL数据库课程设计.doc
- OpenGL ES 之 2D 纹理介绍和使用
- Python监控股价并通过微信提醒
- 《精进》(采铜)——读书笔记
- 域名解析地址如何查看?为什么要做域名解析?
- 【Matlab】如何规范地编写一个MATLAB函数文件
- 如何解决chrome flash 过期
- 如何让绘画灵气十足-张聪-专题视频课程
- 已知坐标用matlab画图,已知45个点X Y Z的坐标值已知,如何用matlab画出网格图,每......
- 深圳周边户外活动经典线路----转载
- IBM Power6、7配件FC号描述翻译(unix360.part06)
- 行车电脑蓝牙ELM327 OBD使用记
- 超级电容的PWM电流镜方案的一些注意点
- 微信小程序用户登录功能无法使用
- 深入usb网络共享(一) usb共享的开启流程(and5.1)