首页 > 解决方案 > sed 命令删除文件中的特定项目

问题描述

之前可能已经问过类似的问题,但我找不到解决这个问题的方法:

我需要删除字符串的文件是:

#includedir /etc/sudoers.d
%wheel  ALL=(ALL)       NOPASSWD: ALL
pam_ansible ALL=(ALL) NOPASSWD: ALL
awx ALL=(ALL) NOPASSWD: ALL
***f10222 ALL=(ALL) NOPASSWD: ALL
mn2345zp ALL=(ALL) NOPASSWD: ALL
ab1235xy ALL=(ALL) NOPASSWD: ALL***

注意:***是表示我要删除的部分......***文件中并不存在。

我只想删除多个文件上以粗体(或在 *** 之间)标记的这类字符串,将此文件视为其中之一。

对于这种字符串,sed 可能是什么?删除它并仅保留剩余内容:

#includedir /etc/sudoers.d
%wheel  ALL=(ALL)       NOPASSWD: ALL
pam_ansible ALL=(ALL) NOPASSWD: ALL
awx ALL=(ALL) NOPASSWD: ALL

我是这些命令的新手,我尝试一下:在我的脚本上我尝试添加

sed '/[a-z0-9]/d' $user

其中用户包含 *** 之间的项目列表,但它只显示

sed:无法读取:没有这样的文件或目录

标签: linuxsedgrep

解决方案


试试这个..

  sed '/\*\*\*/,/\*\*\*/d' inputfile

它将删除这两个模式之间的所有内容,甚至包括此模式,并且它也可以处理 *** 位于行中间的情况。


推荐阅读