shell awk处理过滤100万条数据

时间:2024-12-22 15:37:38

背景:

100万条数据。格式如下:

ID 地址

1895756546931805 安徽省六安市裕安区固镇镇佛俺村柳树队
5758 安徽省蒙城县岳坊镇胡寨村小组小胡寨庄6号

1834941674099699 安徽省蚌埠市五河县申集镇朱圩村
1850212719717844 安徽省淮北市
1850212774979300 安徽省合肥市
1850212784889487 安徽省宿州市泗县

目标要求:

筛选出地址不太准确的。地址长度大于11个字符的。

保留前面ID。将结果输出到一个文件中。

操作过程:

#第一步过滤 地址以各个省份开头的
awk '$2 ~ /^北京/{print $0}' originfile >> mid1
awk '$2 ~ /^天津/{print $0}' originfile >> mid1
awk '$2 ~ /^上海/{print $0}' originfile >> mid1
awk '$2 ~ /^重庆/{print $0}' originfile >> mid1
awk '$2 ~ /^安徽/{print $0}' originfile >> mid1
awk '$2 ~ /^河北/{print $0}' originfile >> mid1
awk '$2 ~ /^山西/{print $0}' originfile >> mid1
awk '$2 ~ /^内蒙/{print $0}' originfile >> mid1
awk '$2 ~ /^辽宁/{print $0}' originfile >> mid1
awk '$2 ~ /^吉林/{print $0}' originfile >> mid1
awk '$2 ~ /^黑龙/{print $0}' originfile >> mid1
awk '$2 ~ /^浙江/{print $0}' originfile >> mid1
awk '$2 ~ /^江苏/{print $0}' originfile >> mid1
awk '$2 ~ /^广东/{print $0}' originfile >> mid1
awk '$2 ~ /^福建/{print $0}' originfile >> mid1
awk '$2 ~ /^江西/{print $0}' originfile >> mid1
awk '$2 ~ /^湖南/{print $0}' originfile >> mid1
awk '$2 ~ /^海南/{print $0}' originfile >> mid1
awk '$2 ~ /^河南/{print $0}' originfile >> mid1
awk '$2 ~ /^湖北/{print $0}' originfile >> mid1
awk '$2 ~ /^山东/{print $0}' originfile >> mid1
awk '$2 ~ /^甘肃/{print $0}' originfile >> mid1
awk '$2 ~ /^青海/{print $0}' originfile >> mid1
awk '$2 ~ /^贵州/{print $0}' originfile >> mid1
awk '$2 ~ /^四川/{print $0}' originfile >> mid1
awk '$2 ~ /^云南/{print $0}' originfile >> mid1
awk '$2 ~ /^陕西/{print $0}' originfile >> mid1
awk '$2 ~ /^广西/{print $0}' originfile >> mid1
awk '$2 ~ /^宁夏/{print $0}' originfile >> mid1
awk '$2 ~ /^*/{print $0}' originfile >> mid1
awk '$2 ~ /^*/{print $0}' originfile >> mid1
awk '$2 ~ /^香港/{print $0}' originfile >> mid1
awk '$2 ~ /^澳门/{print $0}' originfile >> mid1
awk '$2 ~ /^*/{print $0}' originfile >> mid1 #第二步 将第二列的字符创长度超过11的筛选出来存入final文件 awk '{if(length($2)>11) print $0}' mid1 >> final