Regex 正则表达式到俱乐部连续行?

Regex 正则表达式到俱乐部连续行?,regex,sed,Regex,Sed,我有这样的文本文件 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:

我有这样的文本文件

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
$paste-d':'-
由于已经提供了最佳的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 'ORS=NR%2?":":RS' file
name1:age1
name2:age2
name3:age3
name4:age4
它可以这样写,但可能无法在所有系统上工作:

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

下面是一个较短的
awk

awk '{printf "%s%s",$1,(NR%2==0?RS:":")}' file
name1:age1
name2:age2
name3:age3
name4:age4
awk 'ORS=NR%2?":":RS' file
name1:age1
name2:age2
name3:age3
name4:age4
这是非常灵活的。如果你想加入每一个
3rd
行,只需更改为
NR%3


这里是另一个
过去的
(这里是最短的解决方案之一)


查找内容:
(\w+)\n(\w+)
。替换为
$1:$2
。简单高效的可能重复,也许最后的
g
不需要完美