我正在尝试使用sed从文件/root/.ssh/authorized_keys
中删除给定的行$ 2。这是我正在运行的命令,不幸的是,它没有删除该行。知道我做错了吗?
sed -i '/$2/d' /root/.ssh/authorized_keys
答案 0 :(得分:2)
$2
不会被单引号内的值替换。应该使用双引号。
答案 1 :(得分:1)
根据Glenn Jackman的建议发布非sed答案。 Tom Zych已经发布了基本的“正确答案”;请注意holygeek的评论。
mv authorized_keys authorized_keys~
fgrep -v "$2" authorized_keys~ >authorized_keys
你可能没有临时文件就可以了,但我不在我的电脑上所以我现在正在安全地玩它。
答案 2 :(得分:0)
您也可以使用shell
while read -r line
do
case "$line" in
*"$2"* ) continue;;
* ) echo "$line" ;;
esac
done < /root/.ssh/authorized_keys > tempfile
mv tempfile /root/.ssh/authorized_keys