我有这样的文本文件
name1
age1
name2
age2
name3
age3
name4
age4
我想要这种格式的数据
name1:age1
name2:age2
name3:age3
name4:age4
有人能建议我使用正则表达式来达到这样的效果吗?我正在使用eclipse正则表达式,其工作方式与记事本++或编辑+正则表达式相同。也可以通过linux中的bash sed来完成它吗?
答案 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