正则表达俱乐部连续线?

时间:2014-11-06 07:16:44

标签: regex sed

我有这样的文本文件

name1
age1
name2
age2
name3
age3
name4
age4

我想要这种格式的数据

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

有人能建议我使用正则表达式来达到这样的效果吗?我正在使用eclipse正则表达式,其工作方式与记事本++或编辑+正则表达式相同。也可以通过linux中的bash sed来完成它吗?

3 个答案:

答案 0 :(得分:2)

通过sed,

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

N将下一行追加到Pattern空间缓冲区。

通过粘贴,

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

答案 1 :(得分:0)

因为已经提供了sed解决方案,这是最好的,用awk替代:

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

答案 2 :(得分:0)

这是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