使用grep从另一个提取字符串

时间:2015-02-10 14:11:36

标签: shell grep

我是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

2 个答案:

答案 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)"