从 grep 搜索中提取环境变量

Extract environment variables from grep search

我想为十几个项目生成一些 .env.example 文件。

为了聪明,避免繁琐copy/pasting我想到了使用grep命令

如何从 :

➜  app-service git:(chore/adding-env-example) ✗ c;grep -r "process\.env\." --exclude-d
ir=node_modules
./src/config/config_prod.js:    level: process.env.LOG_LEVEL || 'error'
./src/config/config_prod.js:      bypassToken: process.env.BYPASS_TOKEN || null
./src/config/config.js:  port: process.env.APP_PORT || 3000,
./src/config/config.js:  frontUrl: process.env.FRONT_URL,
./src/config/config.js:      launchAppTopic: process.env.AWS_SNS_LAUNCH_APP_ARN
...

LOG_LEVEL=
BYPASS_TOKEN=
APP_PORT=
FRONT_URL=
AWS_SNS_LAUNCH_APP_ARN=

?

正在检索环境变量:

 grep -oP "(?<=\.)[[:upper:]_]*(?=[ ,]*)" 

结果:

LOG_LEVEL
BYPASS_TOKEN
APP_PORT
FRONT_URL
AWS_SNS_LAUNCH_APP_ARN

检索环境变量并添加 =

sed -r -n  's|^.*\.([[:upper:]_]+).*$|=|p' 

结果:

LOG_LEVEL=
BYPASS_TOKEN=
APP_PORT=
FRONT_URL=
AWS_SNS_LAUNCH_APP_ARN=

如果要查找所有出现的大写字母后跟大写字母 and/or 下划线,然后是 =,并且仅当它本身是一个词时:

grep -o -P '\b[A-Z][A-Z_]*='