【发布时间】:2021-09-22 18:17:29
【问题描述】:
我有这个文件,它是一个 Linux 设备树:
# Other content
...
&uart3 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart3>;
status = "okay";
};
# Other content
...
起初我想提取&uart3和};之间的行,这是UART3节点,sed:
sed -n '/^&uart3/,${p;/^};/q}' uart3.dts
输出是:
&uart3 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart3>;
status = "okay";
};
我的问题是如何删除 &uart3 和 }; 之间的所有行,或者有没有办法用其他内容替换它们。
我阅读了awk 解决方案关于检测匹配并提高某些标志here。
但我不明白如何实现这一点。
我没有在这里解析设备树,所以不需要 dtc 库,
我仅将文件作为文本文件处理。
由于这会遇到 Yocto 配方,因此解决方案也可以在 Python 中。
【问题讨论】:
-
您能否更具体地说明您在尝试遵循 awk 方法时遇到了什么问题?你试图做什么,它是如何失败的? (另外,您要针对哪个版本的 awk?POSIX 标准 awk?mawk?gawk?)
-
(一般来说,“我怎样才能跨任何语言做到这一点?”问题很容易被认为过于宽泛而无法成为主题;询问您的具体问题在一个问题中在 sed 中执行此操作,在另一个问题中您在 awk 中执行此操作的特定问题,&c. 将避免这种情况)。
-
我想在 Bash 或 Python 中使用它,我已经详细说明我需要删除/修改两行之间的任意数量的行,我可以使用两种模式获得。