Linux 如何用字符串作为变量替换整行?

Linux 如何用字符串作为变量替换整行?,linux,bash,shell,awk,sed,Linux,Bash,Shell,Awk,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 part有什么问题。您可以使用以下命令 #!/bin/bash

如何用字符串作为变量替换整行

#!/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 part有什么问题。

您可以使用以下命令

#!/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

我根据您的要求进行了修改,若不存在则添加,若存在则替换

您可以使用以下命令

#!/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

我根据您的要求进行了修改,若不存在则添加,若存在则替换

您能否向我们展示一些值,以及您如何声明它没有替换?$1是删除节点的主机名,当我对文件进行cat时,它有相同的旧rsa密钥项。$1的值是多少?需要类似于“如果存在替换”或“将其添加为新”的内容您可以向我们展示一些值吗?您如何声明它没有替换?$1是删除节点的主机名,当我对文件进行cat时,它有相同的旧rsa密钥项。$1的值是多少?需要类似于“如果存在”的内容替换或添加为新的:-e expression#1,char 3:unterminated`s'命令rsa令牌字符串中有空格和/或需要类似于“如果存在”的内容替换或添加为新的内容。然后,您可能需要执行两个命令
sed-i-e/$i/d“-e/^$1/c$RSA”/etc/ssh/ssh_已知主机
基本上我们正在删除我们正在搜索的内容并添加新行。sed:-e expression#1,char 3:unterminated`s'命令RSA令牌字符串中有空格和/或需要类似于if exists的内容替换或添加为new当您可能需要执行两个命令时
sed-i-e/$i/d“-e/^$1/c$RSA”/etc/ssh/ssh_已知_主机
基本上我们正在删除我们正在搜索的内容并添加新行。