在括号之间的单词周围插入空格
Insert spaces around words between parentheses
我有一个名为 sso-shop-med.txt
的文件。
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by)values('204026601',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by)values('502689031',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by)values('502683504',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204009239', 18, TRUE, current_date, '212585704', current_date, '212585704');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204009292', 18, TRUE, current_date, '212585704', current_date, '212585704');
我想在 )values(
之间添加一个空隙,如下所示:) values (
我已经编写了以下 awk
命令,但它不起作用
awk '{gsub(/")values("/, ") values (" ); print}' sso-shop-med.txt
产生的错误:
awk: syntax error in regular expression ")values(" at values("
source line number 1
context is
{gsub(/")values("/, ") values (" >>> ) <<<
我不确定你的 awk 版本,但这似乎有效:
awk '{gsub("\)values\(", "\) values \(") ; print}'
转
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by)values('204026601',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by)values('502689031',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by)values('502683504',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204009239', 18, TRUE, current_date, '212585704', current_date, '212585704');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204009292', 18, TRUE, current_date, '212585704', current_date, '212585704');
进入:
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204026601',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('502689031',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('502683504',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204009239', 18, TRUE, current_date, '212585704', current_date, '212585704');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204009292', 18, TRUE, current_date, '212585704', current_date, '212585704');
看起来怎么样?
在正则表达式中,您需要转义括号并去掉引号:
$ cat file
last_updated_by)values('204026601',
last_updated_by)values('502689031',
last_updated_by)values('502683504',
last_updated_by) values ('204009239',
last_updated_by) values ('204009292',
$ awk '{gsub(/\)values\(/, ") values (" ); print}' file
last_updated_by) values ('204026601',
last_updated_by) values ('502689031',
last_updated_by) values ('502683504',
last_updated_by) values ('204009239',
last_updated_by) values ('204009292',
gawk方法:
awk '{ gsub(/ *values */," values ",[=10=]) }1' sso-shop-med.txt
输出:
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204026601',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('502689031',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('502683504',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204009239', 18, TRUE, current_date, '212585704', current_date, '212585704');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204009292', 18, TRUE, current_date, '212585704', current_date, '212585704');
gsub(/ *values */," values ",[=12=])
- 用leading/trailing白色[=34]替换/重新排列values
=](如果 values
周围有多余的 spaces - 它们将被挤压,如果 values
附近的任何一侧都没有 space(s) - 它们将添加)
您必须使用 \
转义括号,因为它们是正则表达式中的控制字符。
虽然我通常像锤子一样使用 awk,但我觉得 sed
在这里更合适:
sed s/\)values\(/\)\ values\ \(/g sso-shop-med.txt
在 UNIX 中使用 Perl,可以解决这个问题。
use strict;
use warnings;
while(<>){
print if(s/\((values)\)/\ \/);
}
输出:
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204026601',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('502689031',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('502683504',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204009239', 18, TRUE, current_date, '212585704', current_date, '212585704');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204009292', 18, TRUE, current_date, '212585704', current_date, '212585704');
我有一个名为 sso-shop-med.txt
的文件。
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by)values('204026601',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by)values('502689031',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by)values('502683504',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204009239', 18, TRUE, current_date, '212585704', current_date, '212585704');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204009292', 18, TRUE, current_date, '212585704', current_date, '212585704');
我想在 )values(
之间添加一个空隙,如下所示:) values (
我已经编写了以下 awk
命令,但它不起作用
awk '{gsub(/")values("/, ") values (" ); print}' sso-shop-med.txt
产生的错误:
awk: syntax error in regular expression ")values(" at values("
source line number 1
context is
{gsub(/")values("/, ") values (" >>> ) <<<
我不确定你的 awk 版本,但这似乎有效:
awk '{gsub("\)values\(", "\) values \(") ; print}'
转
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by)values('204026601',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by)values('502689031',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by)values('502683504',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204009239', 18, TRUE, current_date, '212585704', current_date, '212585704');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204009292', 18, TRUE, current_date, '212585704', current_date, '212585704');
进入:
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204026601',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('502689031',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('502683504',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204009239', 18, TRUE, current_date, '212585704', current_date, '212585704');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204009292', 18, TRUE, current_date, '212585704', current_date, '212585704');
看起来怎么样?
在正则表达式中,您需要转义括号并去掉引号:
$ cat file
last_updated_by)values('204026601',
last_updated_by)values('502689031',
last_updated_by)values('502683504',
last_updated_by) values ('204009239',
last_updated_by) values ('204009292',
$ awk '{gsub(/\)values\(/, ") values (" ); print}' file
last_updated_by) values ('204026601',
last_updated_by) values ('502689031',
last_updated_by) values ('502683504',
last_updated_by) values ('204009239',
last_updated_by) values ('204009292',
gawk方法:
awk '{ gsub(/ *values */," values ",[=10=]) }1' sso-shop-med.txt
输出:
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204026601',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('502689031',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('502683504',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204009239', 18, TRUE, current_date, '212585704', current_date, '212585704');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204009292', 18, TRUE, current_date, '212585704', current_date, '212585704');
gsub(/ *values */," values ",[=12=])
- 用leading/trailing白色[=34]替换/重新排列values
=](如果values
周围有多余的 spaces - 它们将被挤压,如果values
附近的任何一侧都没有 space(s) - 它们将添加)
您必须使用 \
转义括号,因为它们是正则表达式中的控制字符。
虽然我通常像锤子一样使用 awk,但我觉得 sed
在这里更合适:
sed s/\)values\(/\)\ values\ \(/g sso-shop-med.txt
在 UNIX 中使用 Perl,可以解决这个问题。
use strict;
use warnings;
while(<>){
print if(s/\((values)\)/\ \/);
}
输出:
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204026601',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('502689031',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('502683504',18, TRUE, current_date,'502675409',current_date,'502675409');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204009239', 18, TRUE, current_date, '212585704', current_date, '212585704');
insert into brs.user_shops (user_name, shop_id, is_active, created_date, created_by, last_updated_date, last_updated_by) values ('204009292', 18, TRUE, current_date, '212585704', current_date, '212585704');