尝试使用sed从包含另一个字符串的行中提取字符串

尝试使用sed从包含另一个字符串的行中提取字符串,sed,extract,Sed,Extract,我有一个文件如下所示: $variable['keyword1'] = 'value1'; $variable['keyword2'] = 'value2'; $variable['keyword3'] = 'value3'; $variable['keyword4'] = 'value4'; 关键词1-4都是唯一的,只有字母和数字 值1-4可能是唯一的,也可能不是唯一的,可以是字母、数字、特殊字符的任意组合 我需要能够提取value1或value2或value3或value4

我有一个文件如下所示:

$variable['keyword1']   = 'value1';
$variable['keyword2']   = 'value2';
$variable['keyword3']   = 'value3';
$variable['keyword4']   = 'value4';
关键词1-4都是唯一的,只有字母和数字

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

我需要能够提取value1或value2或value3或value4,并将其保存为$somevariable。因此,关键字显然是我需要在sed命令中定义的东西,以便获得所需的值。我将如何使用sed一行程序来实现这一点?对我来说并不难,但我似乎无法破解它。几个小时来一直在谷歌上搜索和尝试不同的组合

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/"
或者更好:(谢谢威廉)


所以你只想从一个填充了不同值的文件中得到value1?你搞定了。看起来效果很好。没想到我会这么快得到答案。非常感谢你。是的,该文件与描述完全相同,但我更喜欢使用sed,因为这是我尝试使用的所有脚本。没有必要(永远)将grep传输到sed。不要使用grep foo|sed's/a/b/',而是使用
sed'/foo/s/a/b/'
sed "/keyword1/s/.*=\s*'\([^']\+\)';/\1/" inputfile