我需要多线正则表达式(unix兼容)的帮助来替换以下内容 -
create table "my_table" (
"id" integer,
"field_1" integer,
);
使用 -
create table "my_table" (
"id" integer,
"field_1" integer
);
基本上,我正在寻找的是一个逗号,然后是一个紧密的括号,然后是一个分号。我想用仅用括号和分号替换它。
我已经挖掘了其他几个问题,但我相信挑战是围绕换行。
希望能够使用stdin和stdout运行。
答案 0 :(得分:1)
此gnu awk
应该:
awk -v RS='^$' '{gsub(/,\n);/,"\n);")}1' file
create table "my_table" (
"id" integer,
"field_1" integer
);
它将,<new line>);
替换为<new line>);
更新,谢谢Ed
答案 1 :(得分:0)
如果您希望.
与换行符匹配,则需要/s
。但你无论如何都不想要那样。 \s
会匹配换行符(\n
也会匹配。)
my $text = <<'__EOI__';
create table "my_table" (
"id" integer,
"field_1" integer,
);
__EOI__
$text =~ s/,(?=\s*\);)//g;
print($text);
以上删除逗号后跟可选空格)
和;
。