shell自动生成的文件有一个问号的后缀

本文探讨了在Windows环境下编写的脚本,在Linux环境下运行时遇到的断行符不兼容问题。详细分析了Windows( )与Linux( )断行符的区别,并提供了去除文本中多余 字符的方法,确保脚本在不同平台间无缝运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写了一个脚本,自动处理一个文件。

 

rm -f session.log
rm -f link
wget ftp://hostname/f:/ddn/session.log
egrep '^N[[:digit:]]|^D[1-4]' session.log >>link
egrep -c '^N[[:digit:]]|^D[1-4]' session.log >>link
egrep -v 'ACT/UP' link>>link
ls -l session.log >>link
gedit link

 

结果下载下来的session.log的文件名变成了加了一个奇怪字符,link变成了link?如下图。

后续对link session.log文件的处理就会提示无法找到相应的文件。

搜了半天没有找到相应的中文资料。

这里这种情况的出现是因为,脚本是在windows下编写的,然后传到linux上运行,而windows下的断行符是^M$  linux下的断行符是$linux运行的时候无法识别$之前的^M,所以显示了奇怪的字符。

如下图所示

 

 


要将a.txt里的^M去掉并写入b.txt,则使用如下指令cat a.txt | tr -d "^M" > b.txt
注意:语句中的^M是通过ctrl+V, ctrl+M输入的。特指/r字符

 1.windows中的换行符是\r\n,

2. linux/unix下的换行符是\n。

其中:

回车符:\r=0x0d  (13)          return; #回车(carriage return)  

换行符:\n=0x0a (10)           newline。#换行(newline)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值