awk - 在我的情况下,用于删除与模式匹配的行的 sed 命令不起作用
问题描述
这些是我的文件 /etc/sysconfig/network-scripts/route-eth0 的内容:
192.168.1.12/32 via 172.16.1.60
192.168.1.0/24 via 172.16.60.1
我正在使用以下 sed 命令删除一行:
sed -i '#192.168.1.0/24 via 172.16.60.1#d' /etc/sysconfig/network-scripts/route-eth0
但是匹配的行(在我们的例子中是第 2 行)没有被删除。有什么见解吗?
注意:我在 sed 命令中使用 #(hash symbol) 作为分隔符,因为 /(forward slash symbol) 是我的模式的一部分。
解决方案
/
如果在表达式中转义字符是一个问题,您可以使用awk
:
awk -v search='192.168.1.0/24 via 172.16.60.1' '$0 != search' file > file.tmp \
&& mv file.tmp file
或就地gawk
:
gawk -i inplace -v search='192.168.1.0/24 via 172.16.60.1' '$0 != search' file
推荐阅读
- angular - ERROR 错误:未找到 TestComponent 的组件工厂
- javascript - NumberFormat 返回将数字转换为货币的错误格式
- java - 如何在 kubernetes 的集群模式下通过 java 代码从 spark 应用程序获取正确的退出代码
- java - 如何将 JButton 按钮添加到视图
- powershell - Powershell在文件中移动行
- javascript - 可拖动图像到输入字段
- python-3.x - 将批量大小增加到 1 以上时 Pytorch 中的 RuntimeError
- eclipse-plugin - 如何以编程方式调用 SWT 工具栏 AS_DROP_DOWN 按钮菜单?
- android - 在 BottomSheetDialog 中充气 RecyclerView
- full-text-search - ArangoSearch 支持多字段搜索