0

我正在尝试CONFIG_X86_ACPI_CPUFREQ从 obj-$(CONFIG_X86_ACPI_CPUFREQ) 中提取。我想将其推广到其他可能可用的选项 - 比如

XXX-$(YYYY)- 所以我只想YYYY从 shell 脚本中的这个字符串中提取 's 。

我是这样做的-

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

但我确信必须有一种更清洁的方法来仅使用 grep 来做到这一点。有没有办法做到这一点?

4

3 回答 3

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 回答
0
echo $x | perl -ne '$_=m/.*\$\(([^\)]*)\)/;print $1'
于 2013-01-02T07:36:47.580 回答