如何从站点文件的值映射中查找和替换HREF链接中的6位数字,最好使用SED/Python

2024-10-02 18:27:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要创建一个BASH脚本,理想情况下使用SED查找hrefURL链接构造中的值列表,并用HTML sit文件替换这些值列表,查找具有给定URL构造的映射(旧值到新值)。有大约25K个站点文件需要浏览,地图上有大约6000个条目需要我搜索。你知道吗

所有新旧值都有6位数字。你知道吗

URL构造为:

一个值:
HREF=".*jsp\?.*N=[0-9]{1,}.*"

值列表:
HREF=".*\.jsp\?.*N=[0-9]{1,}+N=[0-9]{1,}+N=[0-9]{1,}...*"

值列表由+加符号分隔,列表的长度可以是1n个值。你知道吗

我想忽略这样一个构造:

HREF=".*\.jsp\?.*N=0.*"

即列表只有N=0

实际上,我只对包含文件映射中的一个或多个值的URL感兴趣,这些值前面没有CHANGED——即列表需要更新。你知道吗

请注意:在上面的构造示例中:.*表示任何不是数字的字符;我只对N=之后的值列表中的任何6位值感兴趣;因此我尝试将N=列表与URL构造的其余部分隔离开来,需要注意的是,这个N=列表可以出现在这个URL结构中的任何地方。你知道吗

最初,我想创建一个脚本,该脚本将创建满足上述条件的所有链接的报告,并且地图文件中有一个6位数的旧值及其文件路径,以了解受影响的链接。例如:

Filename    link
filea.jsp   /jsp/search/results.jsp?N=204200+731&Ntx=mode+matchallpartial&Ntk=gensearch&Ntt=
filea.jsp   /jsp/search/BROWSE.jsp?Ntx=mode+matchallpartial&N=213890+217867+731&
fileb.jsp   /jsp/search/results.jsp?N=0+450+207827+213767&Ntx=mode+matchallpartial&Ntk=gensearch&Ntt=

最后,我希望尽可能高效地查找和替换URL构造列表中的所有6位数字,如上所述(我希望速度相当快,因为可能有大约25K个文件,需要查找6K个值,列表中可能有多个值)。你知道吗

**请注意:*在查找和替换时,我遇到的另一个问题是,旧值可能被分配了一个新值,该值已被使用,也可能需要被替换。你知道吗

例如,如果地图文件如下所示:

MAP-FILE.txt
OLD     NEW
214865  218494
214866  217854
214867  214868
214868  218633
...     ...

还有一个HREF链接,例如:

/jsp/search/results.jsp?Ntx=mode+matchallpartial&Ntk=gensearch&N=0+450+214867+214868

214867更改为214868-需要预先标记此值已更改,并且不应替换,否则214867将变为218633,因为所有214868都将更改为218633。希望这是有意义的-然后我需要遍历文件并删除所有用前缀标记的6位数字,这样链接将变成:

/jsp/search/results.jsp?Ntx=mode+matchallpartial&Ntk=gensearch&N=0+450+214868CHANGED+218633CHANGED

除非有更好的方法来管理这些内嵌更改。你知道吗

有人能帮我一下吗?我是一个有这些变化的专家,所以非常感谢你的帮助。你知道吗

非常感谢,
亚历克斯


Tags: 文件脚本url列表search链接mode数字
1条回答
网友
1楼 · 发布于 2024-10-02 18:27:07

我将用某种伪代码来编写代码的大纲。我对Python的记忆不太好,无法用Python快速编写代码。你知道吗

首先找到它是什么类型(如果包含N=0,那么类型3,如果包含“+”,那么类型2,否则类型1),然后通过用“+”号分解(PHP函数名)得到包含“N=…”的字符串列表。你知道吗

第一个循环在链接上。第二个循环用于每个N=数字。第三个循环在map文件中查找替换值。在所有循环之前将映射文件的数据加载到一个变量。文件读取是编程中最慢的操作。 替换第三个循环中的值,然后在返回第一个循环时将新字符串列表内爆(PHP函数)到新链接。你知道吗

可能你有几个文件的链接,然后你需要另一个循环的文件。你知道吗

当处理重复的代码时,你需要一段时间的循环,直到找到备用号码。您需要保存列表中已经使用的号码。你知道吗

相关问题 更多 >