我有一个文本文件,名称.env
如下:
SOME_VAR="value"
SOME_VAR_2="value2"
NODE_ENV="staging"
SOME_VAR_3="value3"
我需要提取之间的字符串"
和"
行开头的位置NODE_ENV=
换句话说,我需要staging
该文件中的字符串。
我尝试过sed
但我不知道如何使用它:
sed -r '/NODE_ENV.*/I!d;s/.*:.(.*).}$/\1/' .env
但那是:
NODE_ENV="staging"
我需要有
staging
答案1
你可以用 sed 做这样的事情:
$ sed -n '/^NODE_ENV/s/^[^"]*"\([^"]*\)"$/\1/p' .env
staging
-n
:抑制打印。/^NODE_ENV/
:选择以 开头的行NODE_ENV
。^[^"]*"\([^"]*\)"$
:选择所有不是"
从行首开始的 字符"
(^[^"]*"
),然后捕获所有后面不是"
(\([^"]*\)
)的字符,最后选择"
末尾的("$
)。/\1/p
:将所有内容替换为捕获的组 (\1
) 并打印 (p
)。
使用 awk
$ awk -F'"' '/^NODE_ENV/ { print $2 }' .env
staging
-F'"'
:用作"
分隔符。/^NODE_ENV/
:选择以 开头的行NODE_ENV
。{ print $2 }
打印第二列。