文档标签问题
select * from dwetlv
;
+--------------------------------------------------------------+
insert into ;
select * from xxxxx;
insert into
;
select * from dwetlv
where a='1';
INSERT into ...
select a from xxxx
insert into select *
select *
insert *
where b='123';
select * from xxxxx
;insert into
;
文档2.txt内容:
select
insert
create
del
update
我的目的是 2.txt为关键字标示 从1.txt中找到关键字,并在关键字前面+上[A],在关键字后第一个分号后+[/A],在第一个关键字出现到分号结束中间的其他关键字忽略不加标记
操作系统:HP-UNIX 不要用sed
结果需求1.txt修改:
[A]
select * from dwetlv
;
[/A]
+--------------------------------------------------------------+
[A]
insert into ;
[/A]
[A]
select * from xxxxx;
[/A]
[A]
insert into
;
[/A]
[A]
select * from dwetlv
where a='1';
[/A]
[A]
INSERT into ...
select a from xxxx
insert into select *
select *
insert *
where b='123';
[/A]
[A]
select * from xxxxx
;
[/A]
[A]
insert
into
;
[/A]
作者: sunsansheng_cu 发布时间: 2011-06-16
- awk 'BEGIN{
- word1="'[A]'"
- word2="'[/A]'"
- end="'\;'"
- flag=0
- while(getline<"'2.txt'"){
- keyword[$0]
- }
- }
- function matchkey(var){
- for(key in keyword){
- if(index(tolower(var), tolower(key))){
- flag++
- return 0
- }
- }
- return -1
- }
- {
- if(!matchkey($0)&&flag==1){
- print word1
- }
- print $0
- if(index($0, end)){
- flag=0
- print word2
- }
- }'
作者: liion631818 发布时间: 2011-06-16
输出结果:在最后一种情况时 会出现问题.
[A]
select * from dwetlv
;
[/A]
+--------------------------------------------------------------+
[A]
insert into ;
[/A]
[A]
select * from xxxxx;
[/A]
[A]
insert into
;
[/A]
[A]
select * from dwetlv
where a='1';
[/A]
[A]
INSERT into ...
select a from xxxx
insert into select *
select *
insert *
where b='123';
[/A]
[A]
select * from xxxxx
;insert into
[/A]
;
[/A]
作者: sunsansheng_cu 发布时间: 2011-06-16
这么大段啊,看着就头疼。呵呵。
作者: zooyo 发布时间: 2011-06-16
- $ awk '/.*;../{sub(";",";\n")}1' raw.txt |awk 'BEGIN{IGNORECASE=1}NR==FNR{a[$1]=1;next}a[$1]&&!p{$0="[A]\n"$0;p=2}p==2&&/;/{sub(";",";\n[/A]");p=0}1' keyword.txt -
作者: yinyuemi 发布时间: 2011-06-16
借楼上SS大牛的代码,先在分号后面加换行awk '/.*;../{sub(";",";\n")}1' raw.txt | 。。。
作者: liion631818 发布时间: 2011-06-16
这么大段啊,看着就头疼。呵呵。
zooyo 发表于 2011-06-16 11:51
awk用的不熟哦,只能用这种直白的代码咯,SS大牛的代码看了半天才明白
作者: liion631818 发布时间: 2011-06-16
作者: sunsansheng_cu 发布时间: 2011-06-16
yinyuemi 发表于 2011-06-16 11:58
大牛的代码 貌似也没解决,这个问题,最后一个举例的:
原文:
select * from xxxxx
;insert into
;
修改后的:
[A]
select * from xxxxx
;
[/A]insert into
;
作者: sunsansheng_cu 发布时间: 2011-06-16
你是说:
如果原文是
- select * from xxxxx
- ;insert into
- ;
- [A]
- select * from xxxxx
- ;
- [/A]insert into
- ;
作者: yinyuemi 发布时间: 2011-06-16