Chinaunix
标题:
sed命令中引用变量的问题
[打印本页]
作者:
bikkuri
时间:
2014-04-29 03:09
标题:
sed命令中引用变量的问题
大家好!我有一个问题向大家请教。
假如我有以下两个文本文件:
[root@hp8 public_html]# grep 135.240.146.1 ~/.ssh/known_hosts
135.240.146.101 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA0vWo8DB2iGAGsWWw4TJNEC4pj8VhIxc8kRsg6kP5rR/kKQ3iP41vmv6n1JUygnTo9A7yX69UuU4NeNE=
135.240.146.102 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAo9U6FLjVJgpJ3iml8j0kI4YzCsou+okqm76QFAT9XYl41/rbBqYh85ecaK1wVBBkqcdxFclINravCbo=
135.240.146.103 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAmmQyWwF2pMEgIE+s9z4vWaLYMRdMCrKGhPZXJogNXB2ReG3j0nITzii3/mg03dTOUOH0ECprRfdTT6+=
135.240.146.104 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEArnang+TphX+Mk638BCLf5RirG+oJzLVWtVNa8KCZXdnSmipETujOkAbo3B6pe8ziJPp5lRshmVx5/AT=
135.240.146.105 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwbFm8b45q4OHzonbX5PkrRFtKd4qPloEi28MEwvXqzbGIiawLn3gxDjekkZDoljGsIZMNEYBgLA90F5=
[root@hp8 public_html]# cat nodes.list
node101 135.240.146.101
node102 135.240.146.102
node103 135.240.146.103
node104 135.240.146.104
node105 135.240.146.105
复制代码
然后我想从~/.ssh/known_hosts文件中删除所有含有nodes.list中提到的IP地址的行。
我写了以下程序段想实现这一功能,但是很遗憾的是执行该程序段后,并没有任何一行被删除。
nodelist=./nodes.list
for ip in $(awk '{print$2}' $nodelist) ; do
sed -i '/$ip/d' ~/.ssh/known_hosts
done
复制代码
而我执行sed -i '/135.240.146.101/d' ~/.ssh/known_hosts命令时是可以删除含有135.240.146.101的行的。
所以我想问一下在sed命令中应该如何引用变量呢?
作者:
bikkuri
时间:
2014-04-29 03:27
试了
http://dadi.me/1064
提到的各种方法,居然没有一个有效的。
作者:
Shell_HAT
时间:
2014-04-29 08:02
sed -i "/$ip/d" ~/.ssh/known_hosts
复制代码
作者:
bikkuri
时间:
2014-04-29 08:47
见鬼了。。。昨天晚上我试过sed -i "/$ip/d" ~/.ssh/known_hosts不行的。。。今天早上再试又可以了。。。
谢谢您的回复。
Shell_HAT 发表于 2014-04-29 08:02
作者:
yestreenstars
时间:
2014-04-29 08:51
也可以这样:
sed -i '/'"$ip"'/d' ~/.ssh/known_hosts
复制代码
作者:
刺客阿地
时间:
2014-04-29 13:07
我是来学习围观楼上两位的!
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2