簡體   English   中英

正則表達式俱樂部連續行?

[英]Regex to club consecutive lines?

我有這樣的文本文件

name1
age1
name2
age2
name3
age3
name4
age4

我想要這種格式的數據

name1:age1
name2:age2
name3:age3
name4:age4

誰能建議我任何正則表達式來達到這樣的效果? 我正在使用eclipse正則表達式,其工作方式與notepad ++或edit +正則表達式相同。 還可以通過Linux中bash中的sed完成嗎?

通過sed

$ sed 'N;s/\n/:/' file
name1:age1
name2:age2
name3:age3
name4:age4

N將下一行追加到模式空間緩沖區。

通過粘貼

$ paste -d':' - - < file
name1:age1
name2:age2
name3:age3
name4:age4

由於已經提供了sed解決方案,因此是awk的最佳替代方案:

>awk 'NR%2==0{print x":"$0}{x=$0}' your_file
name1:age1
name2:age2
name3:age3
name4:age4
> 

這是一個awk

awk '{printf "%s%s",$1,(NR%2==0?RS:":")}' file
name1:age1
name2:age2
name3:age3
name4:age4

可以這樣寫,但可能無法在所有系統上運行:

awk '{printf $1(NR%2==0?RS:":")}' file

這是一個較短的awk

awk 'ORS=NR%2?":":RS' file
name1:age1
name2:age2
name3:age3
name4:age4

這是非常靈活的。 如果您想加入每3rd行,只需更改為NR%3 ...


這是另一個past (這里最短的解決方案之一)

paste -sd":\n" file
name1:age1
name2:age2
name3:age3
name4:age4

暫無
暫無

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

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