免费注册 查看新帖 |

Chinaunix

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

求完整shell 语句,并执行 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-08 22:09 |只看该作者 |倒序浏览
a.txt
222.83.128.0/17
222.84.0.0/16
222.85.0.0/17
222.85.128.0/17
222.86.0.0/15
222.88.0.0/15

b.txt
222.174.245.2

求循环输出成下列格式
ip route add 222.83.128.0/17 via 222.174.245.2
ip route add 222.84.0.0/16 via 222.174.245.2
ip route add 222.85.0.0/17 via 222.174.245.2
ip route add 222.85.128.0/17 via 222.174.245.2
ip route add 222.86.0.0/15 via 222.174.245.2
ip route add 222.88.0.0/15 via 222.174.245.2

justlooks大哥  和nomyself 大哥给的代码都可以输出,

sed -r '1{h;d};G;s/(.*)\n(.*)/ip route add \1 via \2 /;' <(cat b.txt a.txt)

cat a.txt | xargs -n 1 -i{} echo ip route add {} via `cat b.txt`

怎样设计成脚本执行呀?不用把输出变成文件
我自己的办法是先输出成文件

sed -r '1{h;d};G;s/(.*)\n(.*)/ip route add \1 via \2 /;' <(cat b a) >test
sh test

有没更简单的方法?写成shell怎样写

论坛徽章:
0
2 [报告]
发表于 2009-05-08 22:28 |只看该作者

  1. sed -r '1{h;d};G;s/(.*)\n(.*)/ip route add \1 via \2 /;' <(cat b a) | while read line; do $line; done
复制代码

  1. sed -r '1{h;d};G;s/(.*)\n(.*)/ip route add \1 via \2 /;' <(cat b a) | sh -
复制代码

[ 本帖最后由 kwokcn 于 2009-5-8 22:29 编辑 ]

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

回复 #2 kwokcn 的帖子

用什么解释器呢?

写成文件mvvvv
sed -r '1{h;d};G;s/(.*)\n(.*)/ip route add \1 via \2 /;' <(cat b a) | sh -


[root@sdfsf test]# vi mvvvv
[root@sdfsf test]# sh mvvvv
mvvvv: line 1: syntax error near unexpected token `('
mvvvv: line 1: `sed -r '1{h;d};G;s/(.*)\n(.*)/ip route add \1 via \2 /;' <(cat b a) | sh -'

论坛徽章:
0
4 [报告]
发表于 2009-05-08 22:45 |只看该作者
换成cat b a | sed ... | sh -
或者sed ... <<< cat b a | sh -

[ 本帖最后由 kwokcn 于 2009-5-8 22:48 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-05-08 22:50 |只看该作者

回复 #4 kwokcn 的帖子

好像是转义输出的问题
是这样吗
我存储了也不行

你自己存储成shell 执行下看看

[ 本帖最后由 razar 于 2009-5-8 22:54 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2009-05-08 22:56 |只看该作者

  1. # cat tttt
  2. #!/bin/sh

  3. sed -r '1{h;d};G;s/(.*)\n(.*)/ip route add \1 via \2 /;' <<< cat e d | sh -

  4. # ./tttt
  5. RTNETLINK answers: Network is unreachable
  6. RTNETLINK answers: Network is unreachable
  7. RTNETLINK answers: Network is unreachable
  8. RTNETLINK answers: Network is unreachable
  9. RTNETLINK answers: Network is unreachable
  10. RTNETLINK answers: Network is unreachable
复制代码

论坛徽章:
0
7 [报告]
发表于 2009-05-09 11:57 |只看该作者
nc10@your-5554c55be4 ~
$ cat j.txt
222.83.128.0/17
222.84.0.0/16
222.85.0.0/17
222.85.128.0/17
222.86.0.0/15
222.88.0.0/15

nc10@your-5554c55be4 ~
$ cat k.txt
222.174.245.2

nc10@your-5554c55be4 ~
$ gawk 'FILENAME == "j.txt"{x=NR;s[NR]=$0}END{for(i=1;i<=x;i++){
  print "ip route add", s, "via", $0}}' j.txt k.txt
ip route add 222.83.128.0/17 via 222.174.245.2
ip route add 222.84.0.0/16 via 222.174.245.2
ip route add 222.85.0.0/17 via 222.174.245.2
ip route add 222.85.128.0/17 via 222.174.245.2
ip route add 222.86.0.0/15 via 222.174.245.2
ip route add 222.88.0.0/15 via 222.174.245.2

nc10@your-5554c55be4 ~
$

[ 本帖最后由 twfcc 于 2009-5-9 12:00 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2009-05-09 12:04 |只看该作者
怎麼 s 貼不上的?再貼,  sorry, 班竹

gawk 'FILENAME == "j.txt"{x=NR;s[NR]=$0}END{for(i=1;i<=x;i++){
  print "ip route add", s, "via", $0}}' j.txt k.txt

------我看不到 s 和 加在一起,只見到一個 s, 編輯就見到,怪,-----

gawk 'FILENAME == "j.txt"{x=NR;s[NR]=$0}END{for(t=9;t<=x;t++){
    print "ip route add", s[t], "via", $0}}' j.txt k.txt

[ 本帖最后由 twfcc 于 2009-5-9 12:09 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP