我想根据特定的正则表达式模式将一个文件拆分为多个文件。我在下面提供了一个可重现的示例。如果有更简单的解决方案,我也欢迎!
我有一个包含以下文件的目录:
page1.html page2.html page3.html
假设我的 page1.html 看起来像这样:
<strong>Hello world</strong>
<p>ABC, Page (1 whatever).</p>
<p>Some text</p>
<p>DEF, Page (1 ummm what).</p>
<p>Some text</p>
<p>THE<em><strong><span class="underline">GHI</span></strong></em>JK <em><strong><span class="underline">the</span></strong></em>LMNOP<em><strong><span class="underline">Q</span></strong></em>RS.<p> ABC, Page (1).</p>
我想将 page1.html 拆分为:
page1_0.html
<strong>Hello world</strong>
page1_1.html
<p>ABC, Page (1 whatever).</p>
<p>Some text</p>
page1_2.html
<p>DEF, Page (1 ummm what).</p>
<p>Some text</p>
<p>THE<em><strong><span class="underline">GHI</span></strong></em>JK <em><strong><span class="underline">the</span></strong></em>LMNOP<em><strong><span class="underline">Q</span></strong></em>RS.<p> ABC, Page (1).</p>
我想要用以下模式识别行的代码:
[0 to 10 characters in the beginning] , Page (1 [0 to 10 characters here]). </p>
我目前有以下代码:
for filename in *.html; gcsplit -z -f "${filename%.*}_" --suffix-format="%d.html" $filename /'Page (1'/ '{*}'
但这是创建一个 page1_3.html 包含以下文本:
<p>THE<em><strong><span class="underline">GHI</span></strong></em>JK <em><strong><span class="underline">the</span></strong></em>LMNOP<em><strong><span class="underline">Q</span></strong></em>RS.<p> ABC, Page (1).</p>
但是当我运行这个时:
for filename in *.html; gcsplit -z -f "${filename%.*}_" --suffix-format="%d.html" $filename /'^.{0,10}, Page \(1.{0,10}\).\<\/p\>'/ '{*}'
这只是输出文件 page1_0.html。
我的正则表达式有什么问题?有没有其他方法可以实现我想要做的事情?