正则表达式将第二行移至第一行末尾

时间:2015-07-02 15:59:31

标签: regex xpath

我有几行具有某些值,我希望将每一行或每行以<name>合并到以

结尾的行的末尾
 <id>rd://data1/8b</id>
 <name>DM_test1</name>
<id>rd://data2/76f</id>
 <name>DM_test_P</name>

所以最终得到像

这样的东西
<id>rd://data1/8b</id><name>DM_test1</name> 

之所以这样,是因为我使用了两个管道xpath查询

1 个答案:

答案 0 :(得分:0)

的正则表达式

只需删除以</id>结尾的行末尾的换行符。在上,将(<\/id>)\r\n替换为\1$1语法)。在搜索(<\/id>)\n并将其替换为相同内容。

AWK

理想的解决方案使用。这个想法很简单,当行号是奇数时,我们打印没有换行的行,如果不是,我们用换行符打印它。

awk '{ if(NR % 2) { printf $0 } else { print $0 } }' file

SED

使用时,我们在保留空间中放置一行,当它包含<id>´ and append the line to it when it's a行时。然后我们删除换行符并通过与模式空间交换来打印保持缓冲区。

sed -n '/<id>.*<\/id>/{h}; /<name>.*<\/name>/{H;x;s/\n//;p}' file

PR

使用pr我们可以实现类似的目标:

pr -s --columns 2 file