解释

解释

我有一个包含大约 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 是组号(按顺序增加,第一个是组,第二个是组,依此类推)。()$x12

替换字符串可以分解如下:

--\1用于打印两个文字-字符,后跟正则表达式中匹配的所有字符((.*)组),这些字符插入到 的位置\1

用于\n在替换字符串中添加新行(\r\n可能需要根据您的操作系统使用,但我目前假设\n单独使用就可以)。

SELECT * FROM \1;部分用于打印所见的字符串,但会\1像之前一样被匹配的字符替换(这将是表名)。

相关内容