【发布时间】:2017-06-04 07:03:27
【问题描述】:
我正在尝试使用 sed 或 perl 来替换 ); 的第一个实例之前文件中出现的所有连字符;
到目前为止,我有以下内容替换了我的文件中的所有连字符,但我不能让它只匹配“);”的第一个实例。
perl -pi -e 's/[^.*);]?-/_/' 00-90.sql
更多信息:
我正在尝试从已生成的创建表 SQL 中删除无效的连字符,我们有 1k+ 个文件要通过,但我用它点击的任何内容都会替换所有连字符。
要清理的文本示例:
CREATE TABLE e_00_90 (
Last_Name nvarchar(50),
Initials nvarchar(3),
Company_Division nvarchar(50),
Status nvarchar(12),
Ckeyword5 nvarchar(15),
Value_of_Contract_-_Overh decimal(20,2)
);
insert into export_00_90 values ('Sample-One', 'R', 'Div 1', 'Expired', 'ANONYTR', 5000);
insert into export_00_90 values ('Sample Two', 'R', 'Div_2', 'Expired', 'WISHBONE', 13000);
我只需要 Create Table 块来删除连字符。
【问题讨论】:
-
试试
's/^((?:(?!\);).)*)-\);/$1_);/'
标签: regex perl sed pattern-matching