2013-01-02 41 views
0

我試圖從 obj - $(CONFIG_X86_ACPI_CPUFREQ)中提取CONFIG_X86_ACPI_CPUFREQ。我想概括這對其他 選項可能可用 - 像grep捕獲一個詞組

XXX-$(YYYY) - 所以我想從這個字符串中的shell腳本只提取YYYY的。

我做了這樣的 -

# echo "obj-\$(CONFIG_MMC_SDHCI)" | cut -d"\$" -f2 | cut -d"(" -f2 | cut -d ")" -f1 
CONFIG_MMC_SDHCI 

但我相信必須有唯一做到這一點用grep更清潔的方式。有沒有辦法做到這一點?

回答

0

單程:

x='XXX-$(YYYY)' 
$ echo $x | awk -F'[)(]' '{print $2}' 
YYYY 

帶上德限制器爲'('')',awk將在$ 2中具有必需的字段。

更新

使用grep:

$ echo $x | grep -oP '(?<=\().*(?=\))' 
YYYY 

grep-P選項用於Perl的正則表達式一樣。這個表達式告訴任何前面有'(',後面跟着')'

0

使用sed

echo "obj-\$(CONFIG_MMC_SDHCI)" | sed 's/.\{3\}-\$(\(.*\))/\1/g' 

可以使用...而不是.\{3\} 如果你確信你的東西進來括號之間而已,那麼你就可以進一步簡化爲:

sed 's/.*(\(.*\))/\1/g' 
0
echo $x | perl -ne '$_=m/.*\$\(([^\)]*)\)/;print $1'