【发布时间】:2018-09-19 13:50:40
【问题描述】:
对于 openwrt,我通常使用 UCI 来获取某些脚本的变量数据。类似的东西:
uci get /etc/config/network.lan.data
不幸的是,我没有发现 Linux 有类似的东西,但我相信 awk 或 sed 可以在不需要大量输出的情况下做到这一点。
一般来说,第一个字符串只是寻找第二个的参数
输入:
...
config 'wan'
data 'a1 a2 a3'
something 'words'
config 'lan'
info 'words'
data 'b1 b2 b3'
something 'words'
config 'net'
something 'words'
info 'words'
data 'c1 c2'
...
输出:
b1 b2 b3
--- 编辑:--
我相信有了这个表单的输入,脚本的功能会更广泛:
输入:
...
config something 'wan'
something some_data 'a1 a2 a3'
something 'words'
config something 'lan'
something some_info 'words'
something some_data 'b1 b2 b3'
something 'words'
config something 'net'
something 'words'
something some_info 'words'
something some_data 'c1 c2'
...
注意请求,这里有更好的解释:
1 - 查找带有 'lan' 的行(或者可能带有 config.*.'lan')
2 - 如果找到,则在以下行中搜索以单词结尾的数据(可能是 *.data)的第一行
3 - 打印此行''之间的内容
输出:
b1 b2 b3
什么是最好的解决方案?
感谢关注!
【问题讨论】:
-
不够清楚,能否请您告诉我在 Input_file 中从何处执行搜索?请对此更加清楚。
-
如果您假设我们知道
openwrt I usually use UCI来说明您的要求,那么 YMMV。告诉我们输出b1 b2 b3的标准是什么,因为有几种替代方案和几种可能的方法来实现解决方案(data第二次出现?包含lan的块?还有其他东西吗?),因此您可以选择不拘一格的答案到目前为止! -
1 - 搜索第一行有“lan”(或“something.*.'lan'”)的行; 2 - 如果在包含“日期”的第一行下方找到并打印 ' ' 之间的值