日期:2014-05-16  浏览次数:21207 次

如何使用shell脚本删除文本文件中最后一个换行符?
小弟需要自动对一个文本文件进行处理,需要删除最后一行的换行符。但是小弟对sed和awk的使用还只是入门级,GOOGLE了N久没有找到一个有效的解决办法,只好麻烦大虾们帮小弟这个忙了。。

原文件类似这样:
123458|5785|3315
345436|5636|9921


文件中第二行为最后一行,这一行的最后有一个换行符,导致实际文件的行数为3,第三行为空行。
我现在需要使用shell脚本删除掉这最后的一个空行,达到的目的就是文件有效记录数为2,文件也只有2行。

之前尝试过sed删除最后一行,但是好像sed是不能删除最后一个换行符的?反正使用后貌似是把我的第二行记录整个给删掉了;也尝试过删除最后一个字符,结果把我的第二行记录的最后一个字符给删掉了。反正怎么都无法达到我的目的。

只好请教各位高手了,希望能够解决我的问题,先谢了!
shell awk sed

------解决方案--------------------
明白你的意思了。一下是我的实现,我也刚接触这东西,有点繁琐。
[root@localhost wwe]# cat -E good
$
good$
[root@localhost wwe]# 
1.借助tr命令
[root@localhost wwe]# tail -n1 good 
------解决方案--------------------
 tr -d '\n' >> oo
[root@localhost wwe]# cat -E oo
good[root[/color]@localhost wwe]# 
2.将good中的最后一行删除
 [root@localhost wwe]# sed -i '$d' good
[root@localhost wwe]# cat -E good
$
3.将oo中的处理了换行字符的结果写入good
 [root@localhost wwe]# sed -i 'r oo' good
[root@localhost wwe]# cat -E good
$
good[root@localhost wwe]#