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

时间:2012-07-16 04:46:52

标签: sed extract

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

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

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

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

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

1 个答案:

答案 0 :(得分: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