我有一个名为.env
的文本文件,像这样:
SOME_VAR="value"
SOME_VAR_2="value2"
NODE_ENV="staging"
SOME_VAR_3="value3"
我需要提取"
和"
之间的字符串,其中以NODE_ENV=
开头的行换句话说,我需要该文件中的字符串staging
。然后我需要使用。
这样的命令现在我有这个:
git checkout $(cat .environment)
其中.environment
是一个具有单个值staging
的文件,因此使用该命令我得到:
git checkout $(cat .environment)
,但现在我需要我之前说过的,从具有上述格式的多行文件中提取值。
我尝试了sed
,但我不确定如何使用它:
sed -r '/NODE_ENV.*/I!d;s/.*:.(.*).}$/1/' .env
但:
NODE_ENV="staging"
,我需要得到的是:
staging
您的regexp正在寻找:
字符,但在文件中没有:
。您应该寻找="..."
,并使用捕获组来匹配"
之间的内容。
sed -n -r '/NODE_ENV/s/.*="(.*)"/1/p' .env
使用-n
选项禁用默认打印,然后将p
附加到命令后,以在替换后打印匹配的行。
您可以使用grep提取该值:
grep -Po '(?<=NODE_ENV=")[^"]*' .env
输出将是:
staging
你可以组合一些简单的命令:
grep NODE_ENV .env | sed -E 's/.*"(.*)"/1/'