我正在尝试找出一个 awk 命令/脚本来从一个大文件中提取一段文本。我感兴趣的文件子部分如下:
Board Info: #512
Manufacturer: "Dell Inc."
Product: "0X3D66"
Version: "A02"
Serial: "..CN7016343F00IE."
Chassis Info: #768
主板信息和底盘信息行有 2 个前导空格,而缩进块有 4 个。我不想假设结束行以底盘信息开头(可能是其他内容),而只是依靠以 2 个空格开头的“下一行”。
这:
awk '/^\s{2}Board Info/,/^\s{2}[^B ]/' dump.txt
解决了这个特定的实例,但是如果不是“底盘信息”,结束块行以字母 B 开头(例如,BOM),则不起作用。
如果我使用:
awk '/^\s{2}Board Info/,/^\s{2}\S*/' dump.txt
结尾模式也与“Board Info”行匹配,所以我只获取了该行。如何在不硬编码结尾块(如上所述)的情况下获取缩进的块(前导 4 个空格),并且不依赖结尾模式“下一行恰好以 2 个前导空格开头”?