題 是否有Bash命令將\ r \ n轉換為\ n?


是否有Bash命令將\ r \ n轉換為\ n?

當我將腳本從Windows上傳到Linux時,我需要一個這樣的工具來使事情有效。


17
2018-06-24 14:15


起源


dos2unix 通常是可用的,否則 sed -e 's/\r$//' - falstro
不,沒有Bash命令,但是有 dos2unix 這是一個Unix / Linux程序來做你想要的。 - Dennis Williamson
你為什麼不使用一個理智的文本編輯器,讓你在保存文件時選擇換行樣式? - vtest


答案:


有:

dos2unix

23
2018-06-24 14:17



這是歷史上正確的答案,儘管dos2unix現在並不總是可用。 - Jared


用sed找到那個結尾 .txt, .php, .js, .css

 sed -rie 's/\r\n/\n/' \
 $(find . -type f -iregex ".*\.\(txt\|php\|js\|css\)")

5
2017-11-28 01:38





有一個名為的Unix實用程序 conv 可以轉換行結尾。它通常用軟鏈接調用 u2d 要么 d2u 要么 unix2dos 要么 dos2unix

另外還有一些叫做的工具 fromdos 和 todos


5
2018-06-24 14:17





翻譯(TR)在所有Unix中都可用:

tr -d '\r'  # From \r\n line end (DOS/Windows), the \r will be removed so \n line end (Unix) remains.

4
2018-06-25 11:56



具有消除任何其他的副作用 \r也是。但它們非常罕見。 - ivan_pozdeev


使用POSIX執行此操作非常棘手:

  • POSIX Sed 不支持 \r 要么 \15。即使它確實如此,到位 選項 -i 不是POSIX

  • POSIX Awk 支持 \r 和 \15, 然而 -i inplace 選項 不是POSIX

  • D2U 和 DOS2UNIX的 不是 POSIX實用程序但是  是

  • POSIX ex 不支持 \r\15\n 要么 \12

要刪除回車:

awk 'BEGIN{RS="\1";ORS="";getline;gsub("\r","");print>ARGV[1]}' file

要添加回車:

awk 'BEGIN{RS="\1";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file

2
2018-04-16 22:32





使用man 1 ed(在沒有任何先前備份的情況下就地編輯文件 - 不像:sed .. -i“.bak”...):

ed -s file <<< $'H\ng/\r*$/s///\nwq'

1
2018-06-24 17:26



我甚至不知道編輯,但它做的工作(舊但金) - dwana


是的,使用 dos2unix。例如:

[justin@mybox ~]$ dos2unix myfile

0
2018-06-24 14:17





$ 重新編碼 dos ..文件
  $ 翻動 -u文件

(每個系統也適用於非Ubuntu系統,但這些鏈接很方便。)


0
2018-06-25 01:27