我是shell开发的新手。我想使用grep实用程序
从uci命令结果中提取cfgxxxx
#uci show -X fire |grep "fire\.[^.]\+\.instance
fire.cfg1a3837.instance=1
fire.cfg1c3837.instance=2
fire.cfg243837.instance=3
fire.cfg263837.instance=4
fire.cfg283837.instance=5
fire.cfg2a3837.instance=6
fire.cfg2c3837.instance=7
fire.cfg2e3837.instance=8
fire.cfg303837.instance=9
fire.cfg323837.instance=10
但以下命令不提取确切的值
#uci show -X fire |grep "fire\.[^.]\+\.instance=1" | cut -d. -f2
cfg1a3837 --> instance=1
cfg323837 --> instance=10
如何仅提取实例编号1
答案 0 :(得分:3)
uci show -X fire |grep "fire\.[^.]\+\.instance=1$" | cut -d. -f2
您需要添加$
其他=1
,=10
将被视为相同。
答案 1 :(得分:2)
您可以使用awk并将2个命令合并为一个:
uci show -X fire | awk -F '\\.' '$1=="fire"{print $2}'
cfg1a3837
cfg1c3837
cfg243837
cfg263837
cfg283837
cfg2a3837
cfg2c3837
cfg2e3837
cfg303837
cfg323837
您也可以使用此grep -oP
:
uci show -X fire | grep -oP "fire\.\K[^.]+(?=\.instance)"