我有几行具有某些值,我希望将每一行或每行以<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查询
答案 0 :(得分:0)
只需删除以</id>
结尾的行末尾的换行符。在windows上,将(<\/id>)\r\n
替换为\1
或$1
(perl语法)。在linux搜索(<\/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 -s --columns 2 file