【发布时间】:2026-01-20 06:45:01
【问题描述】:
我以为我已经弄清楚了,但我想在一个文件中找到所有出现的情况,在该文件中,我在两个双引号之间有一些要删除的文本。
我需要先找到一个匹配项,然后获取从第一个双引号到匹配项的所有内容,然后获取所有文本到第二个双引号并将其删除。我不想只在两个双引号之间获取文本,因为它可能不是我想要删除的文件中的内容。
我用过这样的东西:
perl -p -i.bak -e s/bar/foo/g bar.xml
首先进行查找并替换有效。 然后我去了:
perl -p -i.bak -e s/..\/..\/bar\//g bar.xml
这删除了所有内容,但我需要一直继续到第二个双引号,我不知道如何用 Perl 做到这一点。
我认为它会混合一些正则表达式,但我尝试过的任何方法都没有奏效。 bar 之前的部分将始终相同,但文本会在该点之后更改,但是,它将始终以我要删除的部分的第二个双引号结尾。在那之后会再次出现文本。
【问题讨论】:
-
引号内是否可以有转义引号(
"a 2\" by 4\" piece of wood")? -
你想匹配什么字符串?包括引号。
-
两个引号之间不会有任何其他引号,只有文本。不幸的是,我无法发布真实数据,但它会类似于:“../../../XXX/XX-XXXX-XXX-XXXXXXX-X.XXX”
-
XML?可能值得发布一个样本 - 可能有更好的方法。 (不一定是真实数据。结构重要,内容不重要)