2013-08-04 34 views
2

我要替換昏迷或空間文本換行,但不改變最後一個新行。更換新線用逗號殼

我知道這個問題的:How to replace newlines with tab characters? - 但它產生的結束,而不是新行的標籤。

到目前爲止,我已經配備:

awk 'NR>1{printf","} {printf $1} END{printf"\n"}' 

是否有更簡單的方法來做到這一點?這不是一個任務,我只是好奇想要升級我的腳本。

回答

5

這可能會爲你工作:

paste -s -d, file 

paste -s -d" " file 
2

這應該做的工作:

echo ${$(tr '\n' ',' < file)%?} 

或可能使用SED:

sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/,/g' file 
+0

我正在尋找的東西少神奇的,這些都需要'bash' /'tr'或'分別 – mpapis

0

可以使用sed命令刪除結束 「」

# sed -i 's/,$//g' endmodify.txt 

# cat endmodify.txt 
root 
bin 
daemon 
adm 
lp 
sync 
games 
gopher 

感謝。

+0

sed'的相當良好的知識,你可以看到的結果是在最後一行昏迷,問題是如何避免它 – mpapis

+0

喜mpapis:遺憾的更新:那麼我們就可以用,#SED -i的/,$ // G'endmodify.txt。 –

1

使用perl是不是很paste一樣簡單,但它推廣到更多的情況下:

perl -0pe 's/\n(?!$)/,/g' filename # comma 
perl -0pe 's/\n(?!$)/ /g' filename # space 

(?!$)是在先行斷言,這意味着「沒底」,所以最後一個換行符是左單獨。