我有一个看起来像这样的文件:
$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做到这一点?对我来说看起来并不难,但我似乎无法破解它。谷歌搜索和尝试不同的组合几个小时。
答案 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