Bash 需要使用grep提取logglyKey的帮助吗
我正在开发一个shell脚本,它将替换environment.ts文件中的logglyKeyBash 需要使用grep提取logglyKey的帮助吗,bash,grep,Bash,Grep,我正在开发一个shell脚本,它将替换environment.ts文件中的logglyKey // environment.ts { production: true, logglyKey: 'asdfasfd-asdfsd-asdfs-asdfsdf-asdfasfd' } 我想用bitbucket管道中的环境变量替换构建过程中的logglyKey。我怎样才能做到这一点 我试过了,但它不能正确提取logglyKey // addLogglyKey.sh #!/bin/bash
// environment.ts
{
production: true,
logglyKey: 'asdfasfd-asdfsd-asdfs-asdfsdf-asdfasfd'
}
我想用bitbucket管道中的环境变量替换构建过程中的logglyKey。我怎样才能做到这一点
我试过了,但它不能正确提取logglyKey
// addLogglyKey.sh
#!/bin/bash
export LOGGLY_KEY=$(grep -oP "'logglyKey'\s*:\s*'([A-Za-z0-9-])'" ./src/environments/environment.ts)
echo "Previous logglyKey was : ${LOGGLY_KEY}"
但这打印的是空的logglyKey
Previous logglyKey was :
修复正则表达式将返回grep的结果,但这可能不是您所期望的结果
grep -oP "logglyKey\s*:\s*'([A-Za-z0-9-]+)'" test.txt
结果:
logglyKey: 'asdfasfd-asdfsd-asdfs-asdfsdf-asdfasfd'
试图设置Perl regexp支持的非捕获组也不起作用
grep -oP "^(?:\s*logglyKey\s*:\s*')([A-Za-z0-9-]+)'\s*$" test.txt
logglyKey: 'asdfasfd-asdfsd-asdfs-asdfsdf-asdfasfd'
可以使用sed完成
保持简单,只需使用awk:
$ awk -v new='fluffy-bunny' 'BEGIN{FS=OFS="\047"} /logglyKey:/{$2=new} 1' file
// environment.ts
{
production: true,
logglyKey: 'fluffy-bunny'
}
grep只用于在文件中查找regexp并打印匹配行g/re/p-明白吗?不用于修改文件,而且sed不理解字符串文字,因此如果您试图将其用于任何可能包含字母数字字符以外的数据,您将很快陷入逃过/引用地狱的境地,请参见。Key logglyKey在您的示例中不被引用,而是在模式“logglyKey”中被引用。我得到sed:-e表达式1,char 84:sed-i s/${LOGGLY_KEY}/${VERSION}//environments/environment.*这里,我想编辑environments目录中的两个文件,environment.ts和environment.prod.ts文件。你能告诉我出了什么问题吗?打印sed模式以检查出了什么问题echo s/${LOGGLY_KEY}/${VERSION}/。不,我找不到任何信息。事实上,该命令可以在单个文件上运行,比如environment.ts文件,但在environments目录中,我有两个目录environment.ts和environment.prod.ts。可能是这导致了它的崩溃。我已经把代码包括在这里了/bin/bash export LOGGLY_KEY=$grep-oP logglyKey:'[\\w-]+'环境/环境。*echo先前的logglyKey was:${LOGGLY_KEY}export VERSION=$echo logglyKey:'${NEW LOGGLY}echo新版本号:${VERSION}sed-i s/${LOGGLY_KEY}/${VERSION}/environments/environment*
$ awk -v new='fluffy-bunny' 'BEGIN{FS=OFS="\047"} /logglyKey:/{$2=new} 1' file
// environment.ts
{
production: true,
logglyKey: 'fluffy-bunny'
}