小编xav*_*avi的帖子

sed:提取行直到不匹配的模式

我正在尝试从结束字符串与开始字符串不同的文件中提取行

我有以下格式的输入文件:

<item_id>6</item_id>
  <info1>abc</info1>
  <info2>123</info2>
<item_id>6</item_id>
  <info1>def</info1>
  <info2>456</info2>
<item_id>6</item_id>
  <info1>ghi</info1>
  <info2>789</info2>
<item_id>9</item_id> 
  <info1>jkl</info1>
  <info2>012</info2>
<item_id>9</item_id>
  <info1>mno</info1>
  <info2>345</info2>
Run Code Online (Sandbox Code Playgroud)

我想从“6”中提取到“9”(9 是一个随机数)

开始是 <item_id>6<\item_id>

结束是<item_id>X<\item_id>X 不是 6

预期结果:

<item_id>6</item_id>
  <info1>abc</info1>
  <info2>123</info2>
<item_id>6</item_id>
  <info1>def</info1>
  <info2>456</info2>
<item_id>6</item_id>
  <info1>ghi</info1>
  <info2>789</info2>
Run Code Online (Sandbox Code Playgroud)

我试过:

sed -n "/<item_id>6<\/item_id>/,/<item_id>!6<\/item_id>/p" input.file > output.6
sed -n "/<item_id>6<\/item_id>/,/<item_id>\!6<\/item_id>/p" input.file > output.6
sed -n "/<item_id>6<\/item_id>/,/<item_id>\{!6}<\/item_id>/p" input.file > output.6
sed -n "/<item_id>6<\/item_id>/,/<item_id>(6)\@!.<\/item_id>/p" input.file > output.6
sed -n "/<item_id>6<\/item_id>/,/<item_id>! 6<\/item_id>/p" input.file > output.6
Run Code Online (Sandbox Code Playgroud)

xml sed text-processing

2
推荐指数
1
解决办法
172
查看次数

标签 统计

sed ×1

text-processing ×1

xml ×1