2015-02-10 51 views
0

我是shell開發中的新成員。我想用grep工具從另一個使用grep提取字符串

#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命令結果cfgxxxx但下面的命令不會提取精確值

#uci show -X fire |grep "fire\.[^.]\+\.instance=1" | cut -d. -f2 
cfg1a3837 --> instance=1 
cfg323837 --> instance=10 

如何只提取實例號1

回答

3
uci show -X fire |grep "fire\.[^.]\+\.instance=1$" | cut -d. -f2 

您需要添加$否則=1=10將被視爲相同。

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)" 
相關問題