用Apache的mod_sed进行sed多行替换

时间:2019-03-24 17:28:16

标签: apache sed mod

我想调整某些文件的apache输出,这样:

<template>
  <p>... something in there ...</p>
  <template>... something in there ...</template>
  ... more stuff ...
</template>

<script>
  ... my script ...
  export default something;
</script>

成为这个:

const template = `
  <p>... something in there ...</p>
  <template>... something in there ...</template>
  ... more stuff ...
`

... my script ...
export default something;

(这会将vue.js单个文件组件转换为ES6本机模块)

我发现我可以使用mod_sed实现这一目标,并且在大多数情况下都可以正常工作。我可以这样替换开始<template>和结束</script>标签:

OutputSed "s/<template>/const template = `/g"
OutputSed "s/<\/script>/ /g"

但是我遇到很大问题的地方是中间部分。因此,我要从最后结束</template>标记(请注意,可能有嵌套的<template>标记)中删除。 (且仅)<script>标签,包括标签本身。问题在于,这两个标记之间可能有任意数量的换行符和/或空格。因此,现在我有了可以用mode_sed进行的多行替换,但是我发现的所有示例都无法在apache上下文中使用,到目前为止,我似乎什么都无法运行。

任何帮助都将不胜感激!

0 个答案:

没有答案