加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 如何从文件中删除给定的行

发布时间:2020-12-15 21:14:18 所属栏目:安全 来源:网络整理
导读:我正在编写一个BASH脚本,将我们公司的自定义Intranet与我们的postfix电子邮件服务器集成.在一种情况下,脚本必须从后缀虚拟文件中删除一行,该行采用以下形式(大部分):emailAddress用户名. xyx@abc.com xyz tuv@abc.com tuv lmn@abc.com lmn 我的bash脚本需要
我正在编写一个BASH脚本,将我们公司的自定义Intranet与我们的postfix电子邮件服务器集成.在一种情况下,脚本必须从后缀虚拟文件中删除一行,该行采用以下形式(大部分):emailAddress用户名.

    xyx@abc.com xyz
    tuv@abc.com tuv
    lmn@abc.com lmn

我的bash脚本需要读取包含用户名的文件(每行一个)并从虚拟文件中删除相应的行.所以我们说它读取包含用户名xyz的行;因此在下面的例子中,变量$usr存储值’xyz’.

touch virtual.tmp
cat virtual | while read LINE ; do
if [ "$LINE" != "$usr@abc.com $usr" ] ; then
echo "$LINE" >> virtual.tmp
fi
done
rm -rf virtual
mv virtual.tmp virtual

但是这段代码不起作用,可能效率不高,因为我想要做的就是删除一个基于用户名的行.据推测,我可能不必阅读整个文件.

解决方法

尝试sed -i,如:

sed -i -e "/^$usr@abc.com/d" virtual

应从虚拟中删除该行,无需写入临时文件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读