使用Sed从文本文件中删除一行

时间:2011-09-08 23:52:12

标签: linux bash sed

我正在尝试使用sed从文件/root/.ssh/authorized_keys中删除给定的行$ 2。这是我正在运行的命令,不幸的是,它没有删除该行。知道我做错了吗?

 sed -i '/$2/d' /root/.ssh/authorized_keys

3 个答案:

答案 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