我有这样正则表达式连续行吗?
name1
age1
name2
age2
name3
age3
name4
age4
我想在这个格式的数据
name1:age1
name2:age2
name3:age3
name4:age4
任何人都可以给我建议任何正则表达式来达到这样的效果的文本文件?我正在使用eclipse正则表达式,其工作方式与记事本++或编辑正则表达式相同。也可以通过sed在bash中完成linux吗?
我有这样正则表达式连续行吗?
name1
age1
name2
age2
name3
age3
name4
age4
我想在这个格式的数据
name1:age1
name2:age2
name3:age3
name4:age4
任何人都可以给我建议任何正则表达式来达到这样的效果的文本文件?我正在使用eclipse正则表达式,其工作方式与记事本++或编辑正则表达式相同。也可以通过sed在bash中完成linux吗?
通过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
简单高效,也许最后一个'g'不需要完美 – NeronLeVelu 2014-11-06 07:29:21
既然已经提供了SED解决方案是最好的,analternative使用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
查找内容(这里是最短的解决方案之一):'(\ w +)\ N(\ W +)'。用'$ 1:$ 2'代替。 – 2014-11-06 07:20:24
[我如何使用vim,sed或其他类似工具连接大型文件(100万行)中的连续行对?](http://stackoverflow.com/questions/8545538/how-do- i-join-pairs-of-a-line-in-large-file-1-million-lines-using) – Jotne 2014-11-06 07:53:19