当前位置: 技术问答>linux和unix
关于awk批量生产sql问题
来源: 互联网 发布时间:2016-08-29
本文导语: 现在我有如下需求,有一个aaa.txt文本,文体字段以及内容如下 H码,H码数量 1564434|91731 1325499|57322 1325489|24795 1333474|24009 1564433|12038 1325412|475 1333410|290 1333453|289 1325429|241 1564400|162 1333482|157 1325413|154 1325411|136 1325420|104 156443...
现在我有如下需求,有一个aaa.txt文本,文体字段以及内容如下
H码,H码数量
1564434|91731
1325499|57322
1325489|24795
1333474|24009
1564433|12038
1325412|475
1333410|290
1333453|289
1325429|241
1564400|162
1333482|157
1325413|154
1325411|136
1325420|104
1564432|93
1334458|91
1334457|86
1325460|85
1564437|74
1325440|73
1325461|68
1333475|67
1309085|64
1333437|64
1325423|63
1325437|61
1333439|61
1333416|58
1333430|58
1325441|48
1325463|47
1325432|46
1564431|44
1325434|40
1333483|39
1325422|33
1325445|31
1564422|30
1564410|28
1333459|28
1325449|28
1325433|27
1325427|27
1320010|27
1564455|26
1325490|26
1325428|26
1333420|25
1325425|25
1325478|25
1564453|23
1325457|22
1320095|21
1333433|20
1564402|19
1325416|19
1309054|19
1325436|18
1334461|17
1309087|16
1333491|16
1564448|16
1333484|15
1325435|15
1309089|14
1325426|14
1325448|14
1309014|13
1333497|13
1300028|12
1564447|12
1333455|12
1333490|12
1325454|12
1333450|10
1325453|10
1333431|10
1300013|10
1333469|9
1333419|9
1325417|9
1325485|8
1564408|8
1337019|7
1325415|7
1564414|7
1334466|7
1325431|6
1333477|6
1325464|6
1564409|6
1564404|6
1309067|6
1334460|6
1338936|6
1333496|6
1333428|6
1564406|6
1333466|6
1333465|6
1333460|6
1309020|5
1309036|5
1564416|5
1564401|5
1564474|5
1333470|4
1564407|4
1320082|4
1300094|4
1564415|4
1325462|4
1333429|4
1380013|4
1333499|3
1325424|3
1333436|3
1564430|3
1564457|3
1331061|3
1333435|3
1334408|3
1333412|3
1325491|2
1325421|2
1320061|2
1333473|2
1564454|2
1333413|2
1349226|2
1334495|2
1325456|2
1334403|2
1325493|2
1325477|2
1564439|1
1325495|1
1320016|1
1333478|1
1300085|1
1325430|1
1333495|1
1564456|1
1333471|1
1564427|1
1333432|1
1333476|1
1300055|1
1325469|1
1333418|1
1325473|1
1332107|1
1300024|1
1333462|1
1881234|2
1574562|52
1892456|1
现在想批量将上面的H码插入到数据库的一个表a中,a的字段如下:号码,区号,运营商,品牌,现有如下需求:
如果是133,153对应的品牌是22,189对应的是24 此时运营商代码为11
如果是157,188对应的品牌是23,运营商代码为12
如果是134-139,150-152,158-159,187对应的品牌为21,运营商代码为12
如果是130-132,155,156,186对应的品牌也是21,运营商代码为13
我想通过shell定时生成insert语句,然后通过crontab 定期执行,请大家帮忙分析一下,以下是我个人写的脚本
cat aaa.txt|awk -F | '{if(substr($1,1,3)==133) print $0}' | awk -F '|' '{print $1}' | while read msisdn
do
echo "insert into tp_hcode_temporary values(""'"$msisdn"',"351","11","22");" >>jfy.dat
done
但我不会处理上面的逻辑。请帮忙!
另外发现一个奇怪的问题
cat aaa.txt|awk -F | '{if(substr($1,1,3)~!/13[3,4,5,6,7,8,9]/) print $0}'|grep 1325411
就找不到1325411
cat aaa.txt|grep 1325411
这样是可以的。请帮忙分析,非常着急,不胜感激!
H码,H码数量
1564434|91731
1325499|57322
1325489|24795
1333474|24009
1564433|12038
1325412|475
1333410|290
1333453|289
1325429|241
1564400|162
1333482|157
1325413|154
1325411|136
1325420|104
1564432|93
1334458|91
1334457|86
1325460|85
1564437|74
1325440|73
1325461|68
1333475|67
1309085|64
1333437|64
1325423|63
1325437|61
1333439|61
1333416|58
1333430|58
1325441|48
1325463|47
1325432|46
1564431|44
1325434|40
1333483|39
1325422|33
1325445|31
1564422|30
1564410|28
1333459|28
1325449|28
1325433|27
1325427|27
1320010|27
1564455|26
1325490|26
1325428|26
1333420|25
1325425|25
1325478|25
1564453|23
1325457|22
1320095|21
1333433|20
1564402|19
1325416|19
1309054|19
1325436|18
1334461|17
1309087|16
1333491|16
1564448|16
1333484|15
1325435|15
1309089|14
1325426|14
1325448|14
1309014|13
1333497|13
1300028|12
1564447|12
1333455|12
1333490|12
1325454|12
1333450|10
1325453|10
1333431|10
1300013|10
1333469|9
1333419|9
1325417|9
1325485|8
1564408|8
1337019|7
1325415|7
1564414|7
1334466|7
1325431|6
1333477|6
1325464|6
1564409|6
1564404|6
1309067|6
1334460|6
1338936|6
1333496|6
1333428|6
1564406|6
1333466|6
1333465|6
1333460|6
1309020|5
1309036|5
1564416|5
1564401|5
1564474|5
1333470|4
1564407|4
1320082|4
1300094|4
1564415|4
1325462|4
1333429|4
1380013|4
1333499|3
1325424|3
1333436|3
1564430|3
1564457|3
1331061|3
1333435|3
1334408|3
1333412|3
1325491|2
1325421|2
1320061|2
1333473|2
1564454|2
1333413|2
1349226|2
1334495|2
1325456|2
1334403|2
1325493|2
1325477|2
1564439|1
1325495|1
1320016|1
1333478|1
1300085|1
1325430|1
1333495|1
1564456|1
1333471|1
1564427|1
1333432|1
1333476|1
1300055|1
1325469|1
1333418|1
1325473|1
1332107|1
1300024|1
1333462|1
1881234|2
1574562|52
1892456|1
现在想批量将上面的H码插入到数据库的一个表a中,a的字段如下:号码,区号,运营商,品牌,现有如下需求:
如果是133,153对应的品牌是22,189对应的是24 此时运营商代码为11
如果是157,188对应的品牌是23,运营商代码为12
如果是134-139,150-152,158-159,187对应的品牌为21,运营商代码为12
如果是130-132,155,156,186对应的品牌也是21,运营商代码为13
我想通过shell定时生成insert语句,然后通过crontab 定期执行,请大家帮忙分析一下,以下是我个人写的脚本
cat aaa.txt|awk -F | '{if(substr($1,1,3)==133) print $0}' | awk -F '|' '{print $1}' | while read msisdn
do
echo "insert into tp_hcode_temporary values(""'"$msisdn"',"351","11","22");" >>jfy.dat
done
但我不会处理上面的逻辑。请帮忙!
另外发现一个奇怪的问题
cat aaa.txt|awk -F | '{if(substr($1,1,3)~!/13[3,4,5,6,7,8,9]/) print $0}'|grep 1325411
就找不到1325411
cat aaa.txt|grep 1325411
这样是可以的。请帮忙分析,非常着急,不胜感激!
|
看来楼主跟我是同一行业啊.
#!/bin/sh
src_file=aaa.txt
awk -F'|' '{
nbr=substr($1,1,3);
product="";
businees="";
if(nbr=="133" || nbr=="153"){
product="22";
businees="11";
}
else if(nbr=="189"){
product="24";
businees="11";
}
else if((nbr>=134 && nbr= 150 && nbr = 158 && nbr =130 && nbr
#!/bin/sh
src_file=aaa.txt
awk -F'|' '{
nbr=substr($1,1,3);
product="";
businees="";
if(nbr=="133" || nbr=="153"){
product="22";
businees="11";
}
else if(nbr=="189"){
product="24";
businees="11";
}
else if((nbr>=134 && nbr= 150 && nbr = 158 && nbr =130 && nbr