繁体   English   中英

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

[英]Using Sed To Remove A Line From Text File

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

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

$2不会被单引号内的值替换。 应该使用双引号。

根据Glenn Jackman的建议张贴未回答的答案。 Tom Zych已经发布了基本的“正确答案”。 还请注意holygeek的评论。

mv authorized_keys authorized_keys~
fgrep -v "$2" authorized_keys~ >authorized_keys

您可能没有临时文件就可以通过,但我不在电脑旁,所以我现在很安全地播放它。

您也可以使用外壳

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM