LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1505|回复: 4

有个问题关于 awk ^^

[复制链接]
发表于 2008-3-6 12:25:08 | 显示全部楼层 |阅读模式
样本是这样的:( /tmp/list )
1 124.133.37.248 8080 transparent China 2008-02-29
2 80.190.246.141 3128 transparent Germany 2008-03-01
3 218.65.49.3 3128 transparent China 2008-02-29
4 201.25.119.178 3128 transparent Brazil 2008-02-29
5 195.248.240.210 3128 transparent Great Britain (UK) 2008-02-29
6 200.157.48.198 3128 transparent Brazil 2008-02-29
7 189.10.107.3 3128 transparent Brazil 2008-02-29   

脚本里要获取,代理,端口,国家等信息赋值给 shell 变量
PROXY=`awk 'NR=='$i+1'{print $2}' /tmp/list`
PORT=`awk 'NR=='$i+1'{print $3}' /tmp/list`
STATE=`awk 'NR=='$i+1'{print $5}' /tmp/list`

上边是个笨写法,调用3次 awk 读文件,明显效率低,。。
能不能一次 awk 完成 3 个赋值?
 楼主| 发表于 2008-3-6 14:32:08 | 显示全部楼层
hehe , 这个需求欠考虑,sorry

可以先都取出来再处理
Temp=`awk 'NR=='$i+1'{print $235}' /tmp/list`
PROXY=echo $Temp|cut -d: -f2
.............
回复 支持 反对

使用道具 举报

发表于 2008-3-6 16:54:17 | 显示全部楼层
eval $(awk 'NR=='$i+1'{print "ROXY="$2,"ORT="$3,"STATE="$5}' /tmp/list)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-6 23:48:29 | 显示全部楼层
这样也可以阿,,谢谢 ly 兄的指教,
回复 支持 反对

使用道具 举报

发表于 2008-3-7 14:17:06 | 显示全部楼层
  1. while read null PROXY PORT null STATE null
  2. do
  3.     echo $PROXY $PORT $STATE
  4. done < /tmp/list
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表