2016-08-18 111 views
1

我看到這個:How can I replace a newline (\n) using sed?,並想通過tr來代替換行符',如何用`tr`用逗號替換換行符?

文件看起來是這樣的:

something 
newline 
newline again 

,我希望它看起來像這樣:

something', 
newline', 
newline again', 

所以,我想這些:

tr "\n" "'," < myfileabove tr "\n" "\'," < myfileabove

他們都沒有做我想要的... 。難道我做錯了什麼?

+1

你想要做哪些事:一)替換'」,'因爲你的文字狀態或b)添加新行' ','到你的例子顯示的每一行的末尾? –

+0

我建議使用sed:'sed「s/$ /',/」文件' – Cyrus

回答

2

tr轉換一個字符到另一個字符,它不映射到/從字符串,因此它不能映射換行符爲一個字符串。試圖使用sed來做到這一點,會讓你感到無法理解和/或不可移動的混亂。只需使用awk

awk -v ORS="'," '1' file 

等一下 - 你貼例子沒有告訴你替換爲',換行具體做法是:

$ awk -v ORS="'," '1' file 
something',newline',newline again',$ 

這表明你在每一個是行的末尾附加',一個完全不同的東西。你仍然不能做到這一點與tr但你可以用sedawk做到這一點:

$ sed 's/$/'\'',/' file 
something', 
newline', 
newline again', 

$ awk -v ORS="',\n" '1' file 
something', 
newline', 
newline again', 
+0

'awk'沒關係,但我更願意堅持我認識的工具。有沒有可能的方式使用'tr'來完成它? – Hunle

+0

不,'tr'用於將一個字符轉換爲另一個字符,但是您希望將一個字符轉換爲多字符字符串。如果你堅持使用你認識的工具,無論他們是否適合工作,而不是學習適合於每項工作的工具,那麼編寫軟件將會非常困難。您要花費一個簡短的學習曲線來終生耗時,低效,錯誤的編碼。 –

+1

@Hunle這不會回答你的問題,並在過去一年+沒有其他答案已發佈,請參閱https://stackoverflow.com/help/someone-answers下一步做什麼。 –