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 应从虚拟中删除该行,无需写入临时文件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |