2016-06-28 54 views
1

我需要將一系列用換行符格式化的文本文件轉換爲由換行符(\ n)分隔的單個行。例如:Bash連接並用換行符替換回車

This is an example text file 
where the contents are separated 
by line breaks 

我想這是什麼樣子是:

This is an example text file\nwhere the contents are separated\nby line breaks\n 

我願意用awk,sed或任何內置的POSIX命令。

+0

你的意思是'tr'\ r''\ n'<文件' – anubhava

+0

糟糕,你忘了發佈你的代碼! StackOverflow是關於幫助人們修復他們的代碼。這不是免費的編碼服務。任何代碼都比沒有代碼更好。即使你不知道如何編寫它,甚至元代碼也會演示你如何看待程序應該起作用。 – ghoti

回答

2

請嘗試此解決方案:

awk 'BEGIN{RS="\n";ORS="\\n"}1' file.txt 

我們正在做的是檢測記錄分隔符如「\ n」,當我們打印時,使用「\ n」,雙斜槓意味着它必須打印「 \ n',用默認動作強制打印我們使用模式1(打印整個記錄)。

如果您有任何問題,請告訴我,我沒有可用的awk來嘗試它。

1

如果您的意思是「回車」,「換行」或換行符或其他內容,您說「換行符」還不清楚,也不清楚您是否想用字符串\n替換換行符,或者只是想要帶筆架換行還是別的什麼回報,但如果其後者,那麼所有你需要的是:

dos2unix file 

如果你沒有DOS2UNIX的,你可以用任何awk完成這件事:

$ printf 'foo\r\nbar\r\n' | cat -v 
foo^M 
bar^M 

$ printf 'foo\r\nbar\r\n' | awk '{sub(/\r$/,"")}1' | cat -v 
foo 
bar 

你因爲它是ca,所以不能用tr來強有力地完成它不知道\r何時在某行的末尾,而且不能用sed進行移植。

0

這可能爲你工作(GNU SED):

sed '1h;1!H;$!d;x;s/\n/\\n/g' file 

啜食文件到內存中,並引用新行。