1. 程式人生 > >shell自動生成的檔案有一個問號的字尾

shell自動生成的檔案有一個問號的字尾

寫了一個指令碼,自動處理一個檔案。

 

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)