如果换行符是文件中的最后一个字符,应该如何删除它?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (69)

有一些文件,如果它是文件中的最后一个字符,想删除最后一个换行符:

0013600   n   t  >  \n

已经尝试过一些关于sed的技巧:

sed -e '$s/\(.*\)\n$/\1/' abc

有什么比较好的办法吗?

提问于
用户回答回答于
perl -pe 'chomp if eof' filename >filename2

或者:

perl -pi -e 'chomp if eof' filename
用户回答回答于

在bash、ksh、zsh中的形式:

printf %s "$(< in.txt)" > out.txt

或者尝试:

printf %s "$(cat in.txt)" > out.txt
- `awk 'NR > 1 { print prev } { prev=$0 } END { ORS=""; print }' in.txt`
- Printing is delayed by one line so that the final line can be handled in the `END` block, where it is printed without a trailing `\n` due to setting the output-record separator (`OFS`) to an empty string.

扫码关注云+社区