免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: bfz814
打印 上一主题 下一主题

位置不定,顺序不定的,字符串提取,在线! [复制链接]

论坛徽章:
0
31 [报告]
发表于 2009-06-05 14:12 |只看该作者
  1. [root@Mylinux tmp]# cat file1
  2. DIP="192.168.3.1"
  3. PROTOCOL="tcp"
  4. DPORT="80"
  5. [root@Mylinux tmp]# cat file2
  6. iptables -A INPUT -p tcp --dport 80 -d 192.168.3.1 -j DROP
  7. iptables -A OUTPUT -p udp --dport 80 -d 192.168.3.1 -j DROP
  8. iptables -A INPUT -d 192.168.3.1 -j DROP
  9. iptables -I FORWARD -p tcp -d 192.168.3.1 -j DROP
  10. iptables -I OUTPUT -d 192.168.3.1 -j DROP
  11. [root@Mylinux tmp]# awk -F "=" 'NR==FNR{gsub(/"/,"",$2);a[$1]=$2}NR>FNR{for (i in a) if ($0~a[i]) {if (i=="DIP") T1=1;else T2=1}if (!T2&&T1) {sub(a["DIP"],"$DIP");print};T1=T2=0}' file1 file2
  12. iptables -A INPUT -d $DIP -j DROP
  13. iptables -I OUTPUT -d $DIP -j DROP
复制代码

论坛徽章:
0
32 [报告]
发表于 2009-06-05 14:57 |只看该作者
哇 好厉害, 看来只有慢慢l理解了

论坛徽章:
0
33 [报告]
发表于 2009-06-05 15:15 |只看该作者

回复 #31 ywlscpl 的帖子

可否解释一下NR,FNR 在跟两个文件时的用法和效果阿??

论坛徽章:
0
34 [报告]
发表于 2009-06-05 15:30 |只看该作者
模仿31楼的:
  1. awk -F '"' 'NR==FNR{a[$1]=$2}NR>FNR{for (i in a) if ($0~a[i]) {if (i=="DIP=") T1=1; else T2=1}if (!T2&&T1) {print} T1=T2=0}' file1 file2
复制代码

论坛徽章:
0
35 [报告]
发表于 2009-06-05 16:11 |只看该作者
组装一个…… - -

  1. [root]# cat 111
  2. DIP="192.168.3.1"
  3. PROTOCOL="tcp"
  4. DPORT="80"
  5. SPORT="8080"
  6. SIP="192.168.1.1"

  7. [root]# cat 222
  8. iptables -A INPUT -p tcp --dport 80 -d 192.168.3.1 -j DROP
  9. iptables -A OUTPUT -p udp --dport 80 -d 192.168.3.1 -j DROP
  10. iptables -A INPUT -d 192.168.3.1 -j DROP
  11. iptables -I FORWARD -p tcp -d 192.168.3.1 -j DROP
  12. iptables -I OUTPUT -d 192.168.3.1 -j DROP

  13. [root]# awk -F"[=\"]" 'BEGIN{printf "awk \047\041/ ("}$1!="DIP"{printf "||"$3} END{printf ") /\047 222\n"}' 111 | bash
  14. iptables -A INPUT -d 192.168.3.1 -j DROP
  15. iptables -I OUTPUT -d 192.168.3.1 -j DROP
复制代码

论坛徽章:
0
36 [报告]
发表于 2009-06-05 20:27 |只看该作者

回复 #35 kwokcn 的帖子

真牛,

狼先生,
等待解释。。。

论坛徽章:
0
37 [报告]
发表于 2009-06-05 22:10 |只看该作者

回复 #36 lucash 的帖子

又搞了个grep的。:)

  1. grep -Ev "\<$(grep -v "^DIP" file1 | grep -Po "(?<=\")[^\"]*(?=\")")\>" file2
复制代码


前面那个是通过file1获取筛选序列,然后组装成对file2进行处理的命令字符串并输出,最后把标准输出传递给bash,作为命令执行。把最后的bash管道去掉就可以看到通过file1组装的字符串了。

论坛徽章:
0
38 [报告]
发表于 2009-06-05 22:13 |只看该作者
狼兄的精神值得学习

论坛徽章:
0
39 [报告]
发表于 2009-06-05 22:19 |只看该作者

回复 #38 ywlscpl 的帖子

无聊,找点事儿琢磨琢磨罢了,你还不是那么老晚还在坛子上泡着。:)

论坛徽章:
0
40 [报告]
发表于 2009-06-05 22:27 |只看该作者

回复 #39 kwokcn 的帖子

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP