bash - BASH - 从文件部分读取行
问题描述
我有一个格式如下的文件:
[SITE1]
north
west
[MOTOR]
west
south
north
[AREA]
west
east
north
[CLEAR]
我需要做的是从特定部分读取所有值。
例如:读取 AREA 并返回:
west
east
north
我在网上找到的示例是针对具有键值对的 ini 文件的。任何人都可以帮助建议我如何做到这一点?
谢谢
解决方案
使用sed
:
category=MOTOR; sed -nE "/^\[$category\]$/{:l n;/^(\[.*\])?$/q;p;bl}" /path/to/your/file
它不会做任何事情,直到它与包含目标类别的行匹配,此时它进入一个循环。在这个循环中,它消耗一行,如果它是空行或另一个类别(或文件末尾)则退出,否则打印该行。
使用的sed
命令如下:
/pattern/
当前行与模式匹配时执行下一个命令或命令组{commands}
重新组合命令,例如有条件地执行它们。:l
定义一个名为“l”的标签,您可以跳转到该标签。n
要求sed
开始下一行工作。q
退出p
打印当前行bl
跳转到“l”标签
你可以在这里试试。
推荐阅读
- python - Keras 中的 model.predict() 无法正常工作
- c# - C# 使用带有 RadioButton 的 switch 语句
- laravel - Laravel Cashier 付款尝试失败,因为付款方式无效
- c# - 将用户的多个字符串输入转换为 Int、DateTime 和 Decimal 数据类型
- apache-spark - 如何根据 Pyspark 中的值找到前 n 个键?
- java - Spring Security httpBasic() 总是显示未经授权
- java - 使用 Artifactory 依赖项时,VS Code Java 语言支持中的“未解决的依赖项”/“无法解析导入”
- python - 将嵌套json转换中的for循环中的字典值拆分为csv文件
- android - android Gridlayout 如何将所有图像对齐到 3 X 2 网格中?
- javascript - 指令在 Node.js 中的上述指令之前执行