0

CONFIG_X86_ACPI_CPUFREQobj-$(CONFIG_X86_ACPI_CPUFREQ)から抽出しようとしています。利用可能な他のオプションのためにこれを一般化したいと思います-のように

XXX-$(YYYY)YYYY-シェルスクリプトでこの文字列から「」のみを抽出したい。

私はこのようにしました -

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

しかし、grep のみを使用してこれを行うためのよりクリーンな方法があるに違いないと確信しています。これを行う方法はありますか?

4

3 に答える 3

0
echo $x | perl -ne '$_=m/.*\$\(([^\)]*)\)/;print $1'
于 2013-01-02T07:36:47.580 に答える
0

使用sed:

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

... の代わりに使用できます.\{3\} 括弧の間にのみ入ることが確実な場合は、次のようにさらに単純化できます。

sed 's/.*(\(.*\))/\1/g'
于 2013-01-02T05:47:01.443 に答える
0

一方通行:

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

区切り文字を'('および')'awkすると、$2 に必須フィールドが含まれます。

更新日:

grep の使用:

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

-Pオプションはgrep、Perl のような正規表現に使用されます。この式は、前に a が'('あり、後ろに a があるものを示し')'ます。

于 2013-01-02T05:47:33.657 に答える