Usando comm
, obtenho resultados que parecem estranhos com isso:
comm -3 <(. "$first_env_file"; env) <(. "$second_env_file"; env)
Eu recebo algo como:
AUTH_LP_ACCOUNT_ID=xxx1
AUTH_LP_ACCOUNT_ID=xxx2
AWS_IMAGE_DOMAIN_NAME=abc
AWS_IMAGE_DOMAIN_NAME=zyx
NODE_ENV=local
NODE_ENV=staging
NODE_PORT=3000
NODE_PORT=4000
REDIS_HOST=localhost
REDIS_HOST=redis
(e sim, os espaços na frente (guias/espaços anexados) estão lá)
o que eu preferiria que fosse algo assim:
--begin--
AUTH_LP_ACCOUNT_ID=xx1
AUTH_LP_ACCOUNT_ID=xx2
---------
AWS_IMAGE_DOMAIN_NAME=abc
AWS_IMAGE_DOMAIN_NAME=zyx
---------
NODE_ENV=local
NODE_ENV=staging
---------
NODE_PORT=3000
NODE_PORT=4000
---------
REDIS_HOST=localhost
REDIS_HOST=redis
---end---
existe uma maneira de conseguir isso?
- para remover linhas anexadas, podemos canalizar através de `sed 's/^ *//.
- colocar
--begin--
e---end---
no início/fim é uma questão fácil - mas como agrupar resultados facilmente?
Meu único palpite em 3 é fazer um loop em cada linha (pulando primeiro) e se o próximo resultado tiver um xxx= vs abc= diferente, então imprima a, --------
mas não estou apaixonado por isso.
Seu palpite está bom. Faça isso no awk.
Com quebras de linha adicionadas para facilitar a leitura:
Saída na amostra fornecida: