【发布时间】:2020-06-09 05:20:11
【问题描述】:
如何使用 sed 按节名获取 ini 文件的一部分。 棘手的部分是节名可能有文件路径。
我的 ini 示例:
[SECTION]
ANYkey=value1
ANYkey2=value2
[test/foo/file.txt]
key=value1
key2=value2
[test/foo/file2.txt]
key3=value3
key4=value4
问题在于检索 ini 部分 [test/foo/file.txt] 的数据
sed 或 awk 后的预期输出:
key=value1
key2=value2
我已经在下面编码以获得 [SECTION] 部分使用下面
sed -e 's/[[:space:]]*\=[[:space:]]*/=/g' -e 's/#.*$//' -e 's/[[:space:]]*$//' -e 's/^[[:space:]]*//' -e "s/^\(.*\)=\([^\"']*\)$/\1=\"\2\"/" < file.ini | sed -n -e "/^\[SECTION\]/,/^\s*\[/{/^[^#].*\=.*/p;}"
使用 sed 获取输出,如
ANYkey=value1
ANYkey2=value2
但由于文件路径([test/foo/file.txt] 之间的斜线),此逻辑不适用于其他部分
【问题讨论】:
-
能否请您在您的问题中更清楚一些,因为它不清楚获取输出的逻辑是什么(您想删除路径行吗?)。另外,请添加您为解决您自己的问题所做的努力,然后让我们知道。
-
@RavinderSingh13:当然。这是提供更多说明的示例。我的 file.ini 如下所示 ``` [SECTION] anykey=anyvalue anykey2=anyvalue2 [test/foo/file.txt] key=value1 key2=value2 ```
-
我可以使用下面的 sed 获取部分 SECTION 但无法检索其他部分 ([test/foo/file.txt]) ``` sed -e 's/[[:space: ]]*\=[[:space:]]*/=/g' -e 's/#.*$//' -e 's/[[:space:]]*$//' -e ' s/^[[:space:]]*//' -e "s/^(.*)=([^\"']*)$/\1=\"\2\"/"
-
好的,感谢您的努力,请将它们添加到您的问题中(因为 cmets 并不意味着显示代码)和代码标签,然后让我们知道。
-
请重新检查我的帖子