Нужна помощь в извлечении logglyKey с помощью grep - PullRequest
0 голосов
/ 18 мая 2018

Я разрабатываю сценарий оболочки, который заменит logglyKey из файла environment.ts.

// environment.ts
{
    production: true,
    logglyKey: 'asdfasfd-asdfsd-asdfs-asdfsdf-asdfasfd'
}

Я хочу заменить logglyKey в процессе сборки из переменных среды из конвейеров bitbucket.Как я могу добиться этого?

Я пробовал это, но он не извлекает 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 : 

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Проще говоря, просто используйте awk:

$ awk -v new='fluffy-bunny' 'BEGIN{FS=OFS="\047"} /logglyKey:/{$2=new} 1' file
// environment.ts
{
    production: true,
    logglyKey: 'fluffy-bunny'
}

grep предназначен только для нахождения регулярного выражения в файле и печати соответствующей строки (g/re/p - получить?), А не для изменения файлов, иsed не понимает строковые литералы, поэтому вы быстро попадете в ад / кавычки, если попытаетесь использовать его для любых данных, которые могут содержать отличные от буквенно-цифровых символов, см. Можно ли надежно экранировать метасимволы регулярных выражений с помощьюСЕПГ .

0 голосов
/ 18 мая 2018

Исправление регулярного выражения вернет результат с помощью 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

sed -nre "s/^\s*logglyKey\s*:\s*'([A-Za-z0-9-]+)'$/\1/p" test.txt
asdfasfd-asdfsd-asdfs-asdfsdf-asdfasfd
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...