作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 shell 命令从 dhcpd.cong 文件中删除静态条目。目前我正在使用 sed 作为主机名。但是同一个主机名有多个静态条目。这是样本 dhcpd.conf 文件的部分:
host my-system4 {
hardware ethernet 11:22:33:44:55:66;
fixed-address 192.168.17.54;
}
host my-system4 {
hardware ethernet 22:33:44:55:66:77;
fixed-address 192.168.17.34;
}
这里我用了:
sed -i '/host my-system4/,/^\}/d' xyz.txt
但此命令正在从文件中删除所有主机 my-system4 条目。如何通过在固定地址上执行 grep 来删除特定条目。此外,主机 my-system4 下的行数也可能有所不同。我需要 shell 命令,它在固定地址上执行 grep 并仅删除该特定主机条目。
最佳答案
你可以说:
sed -e :a -e '/host my-system4/,/}/ { /}/!{ $!{N;ba};};/pattern/d;}' filename
删除包含指定模式的条目。
例如,
sed -e :a -e '/host my-system4/,/}/ { /}/!{ $!{N;ba};};/192\.168\.17\.34/d;}' filename
将删除包含固定地址 192.168.17.34
的条目。请注意,.
已被转义以匹配文字 .
.
如果保证文件中的条目由空行分隔,您可以这样简化它:
sed -e '/./{H;$!d;}' -e 'x;/pattern/d' filename
上面命令中的模式表示要删除的条目。
为就地编辑添加-i
选项:
sed -i -e :a -e '/host my-system4/,/}/ { /}/!{ $!{N;ba};};/192\.168\.17\.34/d;}' filename
或
sed -i -e '/./{H;$!d;}' -e 'x;/pattern/d' filename
关于shell - 想从文件中删除第 i 个匹配模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20781140/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!