免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1586 | 回复: 1
打印 上一主题 下一主题

[文本处理] [已解决]awk中文变量处理出错。 [复制链接]

求职 : 其它语言研发
论坛徽章:
1
巨蟹座
日期:2014-05-19 23:52:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-08-17 12:26 |只看该作者 |倒序浏览
本帖最后由 A西门吹牛A 于 2015-08-17 12:36 编辑

需要处理的文件ip.txt格式如下。
123.56.84.244
13.153.213.55
12.123.153.5

需要处理为如下结果,第一部分前面部分是用nali命令查询到的归属地,后面的10.223.*.2是所走的出口。
123.56.84.244[辽宁省葫芦岛市 铁通] 10.223.115.2
13.153.213.55[美国 Xerox] 10.223.178.2
12.123.153.5[美国 ATT用户] 10.223.199.2

我写的脚本如下。
#!/bin/bash
####   使用方法:把要跟踪的地址写入ip.txt,程序会把每个ip走的出口写入out文件。
####   举例:bash mtracepoint.sh
rm -fr out
host=ip.txt
number=`cat ${host}|wc -l`
for ((i=1;i<=$number;i++))
do
        Host=`head -$i ${host}|tail -1`
        echo ${Host}
        Zone=`nali ${Host}`
        echo ${Zone}
#跟踪4跳路由就停止,然后,在路由中搜索10.223.*.2出口,以及10.223.227.121互联,并所属的ip以及搜索到的所走的出口写入out文件。
        traceroute -m5 ${Host} | awk -F" |(|)" -v Host=$Host -v Zone=$Zone '$0~/10.223.[1-9][0-9][0-9].2\>|10.223.227.121/{print Zone,$4 >> "out"}' &
done
wait

现在遇到的问题是报错如下:
60.6.197.219
60.6.197.219[河北省邢台市 联通ADSL]
awk: cmd. line:1: 联通ADSL]
61.135.169.125
awk: cmd. line:1: ^ invalid char '�' in expression
61.135.169.125[北京市 百度蜘蛛]
61.189.0.80
awk: cmd. line:1: 百度蜘蛛]
awk: cmd. line:1: ^ invalid char '�' in expression
61.189.0.80[辽宁省鞍山市 联通]
awk: cmd. line:1: 联通]
awk: cmd. line:1: ^ invalid char '�' in expression
66.110.33.152
66.110.33.152[加拿大]
66.110.33.184
66.110.33.184[加拿大]

求职 : 其它语言研发
论坛徽章:
1
巨蟹座
日期:2014-05-19 23:52:17
2 [报告]
发表于 2015-08-17 12:36 |只看该作者
解决了。给-v Zone="$Zone"就行了。由于nali执行的结果中部分地址由空格隔开,会导致变量传递出错。用双引号解决。形如:
61.189.0.80[辽宁省鞍山市 联通]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP