是否有具有多条规则的查找和替换应用程序?

是否有具有多条规则的查找和替换应用程序?

我正在寻找一个搜索和替换工具,它可以获取规则列表和文件(或目录)并在文件上运行这些规则。我有很多文件需要更改,我希望能够一次性运行所有规则。

我希望我可以将规则放在单独的文件中,并反复使用同一组规则。

有这样的工具吗?

答案1

我发现我正在寻找sed。使用 -f 选项应该可以满足我的大部分要求。

www.sedtutorial.com 是开始使用 sed 命令的好地方。

答案2

这个工具的功能远不止你想的那样,但可以轻松处理多条规则:

http://www.parse-o-matic.com/parseomaticfree.aspx

答案3

无论你想添加一些简单的规则,保存它们以供日后使用,还是添加正则表达式多行替换BK 替换适合你 ;-)。但说真的。如果你只是想快速运行一些简单、具体的修改,那么这可能不是最好的工具。但如果你想保存规则,而不是每次都想知道如何进行转换,那么这个就行了。我也喜欢它,因为你可以(但不必)保存一个文件夹和一个你将为其运行替换的文件掩码。您还可以在替换组之间移动文件夹集并按特定顺序运行替换。

答案4

检查 TextCrawler。是唯一一个同时具有批处理命令 - 批处理编辑器(在这里您可以输入任意数量的搜索和替换规则)

https://www.digitalvolcano.co.uk/textcrawler.html

此外,对于正则表达式以及简单的查找和替换,您可以使用 notepad++ 插件 (Python),其中包含多个搜索和替换规则。您可以在此处找到代码:

# -*- coding: utf-8 -*-
from __future__ import print_function

from Npp import *
import os
import sys

#-------------------------------------------------------------------------------

class T22601(object):

    def __init__(self):
        top_level_dir = notepad.prompt('Paste path to top-level folder to process:', '', '')
        number_files = 0
        for root, dirs, files in os.walk(top_level_dir):
            nested_levels = root.split('/')
            if len(nested_levels) > 0:
                del dirs[:]
            for filename in files:
                if filename[-5:] == '.html':
                    notepad.open(root + "\\" + filename)
                    console.write(root + "\\" + filename + "\r\n")
                    notepad.runMenuCommand("Encodage", "Convertir en UTF-8")
                    regex_find_repl_dict_list = [
                        { 'find' : '<title>(.*?)</title>', 'replace' : r'\3\2\1' },
                        { 'find' : '<head>\s+', 'replace' : r'\n baba ' },
                    ]
                    editor.beginUndoAction()
                    for d in regex_find_repl_dict_list: editor.rereplace(d['find'], d['replace'])
                    editor.endUndoAction()
                    notepad.save()
                    notepad.close()
                    number_files += 1
        result = notepad.prompt('Number of modified files: ', '', number_files)
        print("Number of modified files: ", number_files)
#-------------------------------------------------------------------------------

if __name__ == '__main__': T22601()

相关内容