sed、perl 等中的多行正则表达式
Multiple Line Regular Expression in sed, perl, etc
我需要多行正则表达式(与 unix 兼容)的帮助来替换以下 -
create table "my_table" (
"id" integer,
"field_1" integer,
);
有-
create table "my_table" (
"id" integer,
"field_1" integer
);
基本上,我要找的是一个逗号,后跟一个右括号,然后是一个分号。我只想用右括号和分号替换它。
我已经研究了其他几个问题,但我认为挑战在于换行符。
希望能够 运行 使用标准输入和标准输出。
如果你想.
匹配一个换行符,你需要/s
。但无论如何你都不想要那个。 \s
将匹配换行符(\n
也是如此)。
my $text = <<'__EOI__';
create table "my_table" (
"id" integer,
"field_1" integer,
);
__EOI__
$text =~ s/,(?=\s*\);)//g;
print($text);
以上删除逗号后跟可选的空格,)
和;
.
这个gnu awk
应该做的:
awk -v RS='^$' '{gsub(/,\n);/,"\n);")}1' file
create table "my_table" (
"id" integer,
"field_1" integer
);
将,<new line>);
替换为<new line>);
已更新,感谢埃德
我需要多行正则表达式(与 unix 兼容)的帮助来替换以下 -
create table "my_table" (
"id" integer,
"field_1" integer,
);
有-
create table "my_table" (
"id" integer,
"field_1" integer
);
基本上,我要找的是一个逗号,后跟一个右括号,然后是一个分号。我只想用右括号和分号替换它。
我已经研究了其他几个问题,但我认为挑战在于换行符。
希望能够 运行 使用标准输入和标准输出。
如果你想.
匹配一个换行符,你需要/s
。但无论如何你都不想要那个。 \s
将匹配换行符(\n
也是如此)。
my $text = <<'__EOI__';
create table "my_table" (
"id" integer,
"field_1" integer,
);
__EOI__
$text =~ s/,(?=\s*\);)//g;
print($text);
以上删除逗号后跟可选的空格,)
和;
.
这个gnu awk
应该做的:
awk -v RS='^$' '{gsub(/,\n);/,"\n);")}1' file
create table "my_table" (
"id" integer,
"field_1" integer
);
将,<new line>);
替换为<new line>);
已更新,感谢埃德