簡體   English   中英

如何在bash中轉換文本文件? (從foo.txt到bar.txt)

[英]How do I convert text files in bash? (foo.txt to bar.txt)

我試圖通過bash使用foo.txt >> bar.txt將一個文本文件追加到另一個。 問題是,foo.txt是Windows文本文件(我認為),因為一旦附加在bar.txt中

every new^M
line^M
ends^M
like this.^M

因此,它們肯定是兩種不同的文件類型。

我已經在Google上搜索了答案,但Google在搜索中不接受諸如“ >>”和“ ^”之類的特殊字符 我能找到的最接近的解決方案是在commandlinefu.com上報告的解決方案 ,但是它所做的只是從bar.txt中刪除r,這實際上根本不是解決方案。

因此,我在這里有兩個問題:

  1. 如何使用bash發現真正的文件類型foo.txt?
  2. 如何正確轉換 foo.txt以使其可附加到bar.txt?

dos2unix轉換Windows行尾:

dos2unix foo.txt
sed 's/$'"/`echo \\\r`/" foo.txt >> bar.txt

或使用dos2unix (如果可用)。

  1. file foo.txt具有DOS樣式的行尾,則file foo.txt將輸出:“ ASCII文本,帶有CRLF行終止符”。

使用fromdostodosunix2dosdos2unix

查找命令dos2unixunix2dos 您不妨先制作一份副本( cp

快速而又骯臟的解決方案:

tr -d '\r' < foo.txt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM