[英]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.