4 回答

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊
在GNU中使用此解決方案sed
:
sed ':a;N;$!ba;s/\n/ /g' file
這將在循環(huán)中讀取整個(gè)文件,然后用空格替換換行符。
說(shuō)明:
通過(guò)創(chuàng)建標(biāo)簽
:a
。將當(dāng)前和下一行附加到模式空間via
N
。如果我們?cè)谧詈笠恍兄?,則跳轉(zhuǎn)到創(chuàng)建的標(biāo)簽
$!ba
($!
意味著不要在最后一行執(zhí)行,因?yàn)閼?yīng)該有一個(gè)最終換行符)。最后,替換用模式空間(即整個(gè)文件)上的空格替換每個(gè)換行符。
這是與BSD和OS X一起使用的跨平臺(tái)兼容語(yǔ)法sed
(根據(jù)@Benjie評(píng)論):
sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g' file
如您所見,使用sed
這個(gè)簡(jiǎn)單的問題是有問題的。有關(guān)更簡(jiǎn)單和適當(dāng)?shù)慕鉀Q方案,請(qǐng)參閱此答案。

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
使用tr
呢?
tr '\n' ' ' < input_filename
或完全刪除換行符:
tr -d '\n' < input.txt > output.txt
或者如果你有GNU版本(有很長(zhǎng)的選項(xiàng))
tr --delete '\n' < input.txt > output.txt

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
更短的awk替代方案:
awk 1 ORS=' '
說(shuō)明
awk程序由條件代碼塊組成的規(guī)則構(gòu)成,即:
condition { code-block }
如果省略代碼塊,則使用默認(rèn)值:{ print $0 }
。因此,它1
被解釋為真實(shí)條件并且print $0
對(duì)每一行執(zhí)行。
當(dāng)awk
讀取輸入時(shí),它會(huì)根據(jù)RS
(記錄分隔符)的值將其拆分為記錄,默認(rèn)情況下是新行,因此awk
默認(rèn)情況下會(huì)解析輸入行。拆分還涉及RS
從輸入記錄中剝離。
現(xiàn)在,在打印記錄時(shí),ORS
(輸出記錄分隔符)會(huì)附加到其上,默認(rèn)值也是換行符。因此,通過(guò)更改ORS
為空格,所有換行符都將更改為空格。
添加回答
舉報(bào)