好吧,我有这个问题,有太多的行和太多不同的文件可以逐个编辑,我需要想出办法来做到这一点。 Regexp可能有用,但我不知道为什么。
我有一个这样的清单:
<a class="jTip">First</a>
<a class="jTip">Second</a>
<a class="jTip">Third</a>
<a class="jTip">Fourth</a>
这是一个很长的名单(大约6000行)。还有大约50个文件包含这样的行:
<a class="jTip">Second</a>, <a class="jTip">Fifth</a>
所以我想要做的是找到一种方法从列表中获取<a class="jTip">First</a>
行,在这些文件中搜索它,并将其替换为<a class="jTip" name="something">First</a>
。
我的问题是,有没有办法让regexp从列表中获取行,然后在其他文件中查找并替换这些行(使用notepad ++,但我愿意接受建议)。
编辑:我认为我没有正确表达我的问题。我有很长的字符串列表,大约6000行。我有大约30个其他文件,包括不同组合的这些行。我需要一种方法来做到这一点:
从列表文件中获取第一行,在其他文件中找到它,将其替换为该行的修改版本。 然后从列表文件中获取第二行,在其他文件中找到它,将其替换为该行的修改版本。 然后从列表文件中获取第三行,在其他文件中找到它,用修改后的版本替换它们。
我必须这样做6000次(每行不同!)。我不能这样做:
找到<a class="jTip">First</a>
替换<a class="jTip" name="something">First</a>
,因为something
会发生变化(我可以手动执行,不会经常更改)。因此,对于第一个源/列表文件,它将是something
,然后我将为第二个列表运行相同的文件,它将是anything
。我不能批量替换(我知道如何替换所有)<a class="jTip">
到<a class="jTip" name="something">
。
可悲的是,我正在处理一个文件的混乱,所以我甚至认为有一种方法可以用正则表达式做到这一点。我以为我会试一试。
另外,抱歉错误的标签,我修好了。
最后,有没有办法“从文件中获取每个(任何字符)并将其替换为其他文件中的(相同字符)”正则表达式中的东西?
答案 0 :(得分:1)
如果您在Linux系统上运行,那么一个解决方案也可以使用cli programm sed
。
sed -i -e 's/<a class="jTip">First</a>/<a class="jTip" name="something">First</a>/g' {pathToFolder}/*
注意:不要忘记将{pathToFolder}
替换为您的实际路径
答案 1 :(得分:0)
您可以使用JQuery
并实现您想要的目标:
$(document).ready(function(){
$('.jTip').each(function(){
if($(this).text() === 'First' ||
$(this).text() === 'Second' ||
$(this).text() === 'Third'){
$(this).attr('name','something');
$(this).text('First');
}
});
})
a[name='something']{
color:red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a class="jTip">First</a><br/>
<a class="jTip">Second</a><br/>
<a class="jTip">Third</a><br/>
<a class="jTip">Fourth</a><br/>
<a class="jTip">Fifth</a><br/>
<a class="jTip">First</a><br/>
<a class="jTip">Second</a><br/>
<a class="jTip">Third</a><br/>
<a class="jTip">Fourth</a><br/>
<a class="jTip">Fifth</a>
为了说明名称something
已添加到元素中,我使用了颜色css。
答案 2 :(得分:0)
打开文件 按 ctrl + f 或 ctrl + h (或转到查找和替换选项)输入类=&#34; jTip&#34;&gt; 在查找框中,并将其替换为 class =&#34; jTip&#34; name =&#34;某事&#34;&gt;
没有比这更简单的答案了。
答案 3 :(得分:0)
您可以使用msr.exe
/ msr.gcc48
仅使用1个命令行来执行此操作:extract - &gt;搜索 - &gt;替换在我打开的项目中的tools
目录:https://github.com/qualiu/msr
假设您的列表文件为source-list.txt
假设要替换的重复目录/文件是paths-to-find
,如:dir1,dir2,file1,file2
从列表中提取,预览3行:
msr -p source-list.txt -it ".*<a class=\"jTip\">(\w+).*" -H 3
在paths-to-find
中递归搜索和替换:
Windows :(如果您希望将其保存在%%a
/ %a
等文件中,请使用my.bat
代替my.cmd
for /f "tokens=*" %a in ('msr -p source-list.txt -it ".*<a class=\"jTip\">(\w+).*" -o "$1" -PAC') do msr -rp paths-to-find -it "(<a class=\"jTip\" name=\"something\">)\w+" -o "${1}%a" -R
Linux的:
for a in $(msr -p source-list.txt -it ".*<a class=\"jTip\">(\w+).*" -o '$1' -PAC); do msr -rp paths-to-find -it "(<a class=\"jTip\" name=\"something\">)\w+" -o '${1}'$a'' -R; done
或
for a in $(msr -p source-list.txt -it '.*<a class="jTip">(\w+).*' -o '$1' -PAC); do msr -rp paths-to-find -it '(<a class="jTip" name="something">)\w+' -o '${1}'$a'' -R; done