我有一个包含大约 200 多个表名的文本文件。示例如下
T_BCPCOMITEE_EA4 分类: 类型 BCPROLE_EA4 故障转移群集 业务标准_EA4
我需要获取表名并添加一个选择语句,最终的输出应该像 htis
--T_BCPCOMITEE_EA4 从 T_BCPCOMITEE_EA4 中选择*; --T_BCPEMERSIT_EA4 从 T_BCPEMERSIT_EA4 中选择*; --T_BCPROLE_EA4 从 T_BCPROLE_EA4 中选择*; --T_BDR_AG_EA4 从 T_BDR_AG_EA4 中选择*; --T_BDR_CRITERIA_EA4 从 T_BDR_CRITERIA_EA4 中选择*;
有什么方法可以自动完成这项任务吗?请帮忙。TIA
答案1
最简单的方法是进行正则表达式查找和替换。
可以通过转到Search
工具栏并选择Replace...
或使用组合键CTRL+来完成H。
确保您已Regular expression
在右下角进行选择并确保. matches newline
未选中(这对于正则表达式按预期工作很重要)。
注意:此正则表达式解决方案假设每行都有一个单独且完整的表名(即,没有表名分布在多行之间,并且每行仅包含一个表名)。
将以下内容放入“查找”框中:
^(.*)
将以下内容放入“替换”框中:
--\1\nSELECT * FROM \1;
解释
正则表达式字符串可以分解如下:
是^
行首锚点,用于确保正则表达式与每行的开头匹配。这可确保它不会意外拾取多余的行。
该(.*)
组用于匹配任意字符(.
)任意次( ),然后使用 的占位符格式*
将这些匹配的字符提供给替换字符串( ) ,其中 x 是组号(按顺序增加,第一个是组,第二个是组,依此类推)。()
$x
1
2
替换字符串可以分解如下:
--\1
用于打印两个文字-
字符,后跟正则表达式中匹配的所有字符((.*)
组),这些字符插入到 的位置\1
。
用于\n
在替换字符串中添加新行(\r\n
可能需要根据您的操作系统使用,但我目前假设\n
单独使用就可以)。
该SELECT * FROM \1;
部分用于打印所见的字符串,但会\1
像之前一样被匹配的字符替换(这将是表名)。