2

我有一个看起来像这样的文件:

$variable['keyword1']   = 'value1';
$variable['keyword2']   = 'value2';
$variable['keyword3']   = 'value3';
$variable['keyword4']   = 'value4';

关键字 1-4都是唯一的,只是字母和数字。

值 1-4可能是唯一的,也可能不是唯一的,可以是字母、数字、特殊字符的任意组合

我需要能够提取value1value2value3value4并将其保存为 $somevariable。所以关键字显然是我需要在 sed 命令中定义的东西,以便我得到所需的值。我将如何使用 sed one 衬垫来做到这一点?对我来说看起来并不难,但我似乎无法破解它。几个小时以来一直在谷歌上搜索并尝试不同的组合。

4

1 回答 1

3
sed -n "s/\$\w\+\['keyword1'\]\s*=\s*'\([^']\+\)';/\1/p" inputfile

保存它:

somevariable=$(sed -n "s/\$\w\+\['keyword1'\]\s*=\s*'\([^']\+\)';/\1/p" inputfile)

如果您的文件与您描述的完全一样,您也可以使用它:

grep keyword1 inputfile | sed "s/.*=\s*'\([^']\+\)';/\1/"

或者更好:(感谢威廉)

sed "/keyword1/s/.*=\s*'\([^']\+\)';/\1/" inputfile
于 2012-07-16T05:03:32.890 回答