shell自動生成的檔案有一個問號的字尾
阿新 • • 發佈:2018-10-31
寫了一個指令碼,自動處理一個檔案。
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)