shell指令碼裡的\r字元。

來源:互聯網
上載者:User

 

在windows上用notepadd++編輯一個shell指令碼,死活出錯,回到linux下,編輯,還是有這個\r,搜尋了下,是這樣的:

http://bluemood.blog.51cto.com/1142811/1030925


由於在shell處理了windows裡的字元檔案,導致本該輸出成兩行的字串變成了一行,而第一行行首的一些字元被第二行覆蓋了

這是由於windows和linux下的/r ^M 字元的區別導致,可以將異常字元都篩選掉再進行輸出:如sed 's/[^0-9,.:A-Za-z]//g'把不符合規則的字元過濾掉

轉載了下面的可以參考下:

Unix體系裡,每行結尾只有“<換行>”,即“\n”;Windows體系裡面,每行結尾是“<換行><回 車>”,即“\n\r”。一個直接結果是,Unix體系下的檔案在Windows裡開啟的話,所有文字會變成一行;而Windows裡的檔案在Unix下開啟的話,在每行的結尾可能會多出一個^M符號。

 

好了,所以我的題目就出在被處理懲罰的檔案的每行末尾都有^M符號,而這凡是是看不出來的。可以用"cat -A test.file"號令查看。是以當我想在行尾添加字元的時辰,它老是添加在行首且會覆蓋掉本來行首的字元。

要把檔案轉換一下,有兩種辦法:

1.號令dos2unix test.file

2.去掉"\r" ,用號令sed -i ""s/\r//"" test.file

好了,如許處理懲罰完,就OK啦。。。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.