脚本实现文本文件在Linux、mac与window下的正常显示
来源:互联网 发布:mysql 登录失败锁定 编辑:程序博客网 时间:2024/05/16 11:48
问题场景
- 脚本文件本应该在Linux下编辑,但是有时候会在Windows下用记事本新建超过一行的脚本文件test.sh,此时传入test.sh到Linux或者mac执行之后有时会报错;
- 在Linux或者mac下新建多行的文本文件a.txt,传入Windows下打开只有一行
原因
Windows、Linux、mac三种操作系统的换行符没有统一。
- Windows:CRLF(\r\n或0d0a)
- Linux: LF(\n或0a)
- mac: CR(\r或0d)
解决方式
针对第一种场景,Windows下的换行符比其他OS(仅区分常见Linux(Ubuntu、centos、suse、Redhat等)与mac,如果想区分更多类型的操作系统请点击这里之后改写脚本)多了一个字符,那么只要把多余的字符用空串替换掉即可,注意脚本支持多个文件但会覆盖掉原文件。
#!/bin/bash# method one#^M的输入方式,Ctrl+V Ctrl+MSYSTEM=`uname -s`if [ $SYSTEM = "Linux" ]; then sed -i 's/\r//g' $@ && echo 'successed' || echo 'failed'elif [ $SYSTEM = "Darwin" ]; then sed -i '' 's/^M//g' $@ && echo 'successed' || echo 'failed'else echo "unknown os"fi
#!/bin/bash# method two#^M的输入方式,Ctrl+V Ctrl+MSYSTEM=`uname -s`if [ $SYSTEM = "Linux" ]; then perl -pi -e 's/\r\n|\n|\r/\n/g' $@ && echo 'successed' || echo 'failed'elif [ $SYSTEM = "Darwin" ]; then perl -pi -e 's/^M//g' $@ && echo 'successed' || echo 'failed'else echo "unknown os"fi
针对第二种场景,其他OS(仅区分常见Linux(Ubuntu、centos、suse、Redhat等)与mac,如果想区分更多类型的操作系统请点击这里之后改写脚本)比Windows少一个字符,只要把每一行的末尾替换成相应字符即可,注意脚本支持多个文件但会覆盖掉原文件。
#!/bin/bash# method oneSYSTEM=`uname -s`if [ $SYSTEM = "Linux" ]; then sed -i 's/$/\r/g' $@ && echo 'successed' || echo 'failed'elif [ $SYSTEM = "Darwin" ]; then sed -i '' 's/$/\n/g' $@ && echo 'successed' || echo 'failed'else echo "unknown os"fi
#!/bin/bash# method twoperl -pi -e 's/\r\n|\n|\r/\r\n/g' $@ && echo 'successed' || echo 'failed'
0 0
- 脚本实现文本文件在Linux、mac与window下的正常显示
- window下php脚本在linux报错的问题
- 怎么在window下把windows生成的文本文件转换成linux形式的
- window与linux下文本文件中的换行符
- windows下的文本文件在linux下查看,中文显示乱码
- [Android]浮层视频效果,在另外一个Window使用SurfaceView无法正常显示的问题排查与解决
- 图片中文水印在Linux机器下无法正常显示
- 如何在Mac下正常的安装Ruby环境
- 图片在ie下无法正常显示,在firefox或chrome正常显示的原因
- lo4j2 日志保存进数据库,在window下运行正常,linux运行日常保存不进数据库的原因。
- U盘在MAC系统下格式化后在windows上显示设备,无法正常使用
- 【解决】在Linux系统下,使用cat查看含有中文的文本文件正常,但是使用vim打开却是乱码的解决方法
- cmake在linux,windows,mac下的安装与使用
- cmake在linux,windows,mac下的安装与使用
- window下文本文件和二进制文件的理解
- mac下批量转换文本文件编码的shell脚本(支持子目录)
- 在任意字符集下正常显示网页的方法
- 在任意字符集下正常显示网页的方法
- configure: error: Neither flex nor lex was found.
- 新路程------无法从ubuntu虚拟机copy文件
- 27. Remove Element
- Hive--DML
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
- 脚本实现文本文件在Linux、mac与window下的正常显示
- 基于ACRGIS二次开发实现地物中心坐标点批量提取
- ListView的简单总结
- python UnicodeEncodeError: 'ascii' codec can't encode characters in position 13-14: ordinal not in r
- LTspice introduction
- 高精度模板 大数的基本运算
- jdbc
- 日期格式不符合要求:Unparseable date: "3e8a4d83533744c698216535a65850c0"
- python爬虫(20)使用真实浏览器打开网页的两种方法