使用sed从文本文件中提取字符串



我有一个名为.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/'

相关内容

  • 没有找到相关文章

最新更新