如何sed用字符串替换整行作为变量?
问题描述:
如何sed用字符串替换整行作为变量?如何sed用字符串替换整行作为变量?
#!/bin/bash
ssh $1 ssh-keyscan -t rsa $1 > /tmp/$1
RSA=$(cat /tmp/$1)
echo $RSA
sed -i 's:'^"$1".*':'"$RSA"':' /etc/ssh/ssh_known_hosts
cat /etc/ssh/ssh_known_hosts | grep $1
它将变量存储在RSA中但没有替换,不知道sed部分有什么问题。
答
您可以使用以下命令。
#!/bin/bash
ssh $1 ssh-keyscan -t rsa $1 > /tmp/$1
RSA=$(cat /tmp/$1)
echo $RSA
sed -i -e "/$1/ d" -e "/^$1/ a $RSA" /etc/ssh/ssh_known_hosts
cat /etc/ssh/ssh_known_hosts | grep $1
我根据您的要求修改,如果不存在行添加,如果它存在替换。
你能向我们展示一些价值观吗?你如何声称它并没有取代? – Inian
$ 1是删除节点的主机名,当我执行该文件时,它具有相同的旧rsa密钥条目。 – asokan
$ 1的价值是多少? – choroba