Estou usando a seguinte combinação de comandos para imprimir valores de um arquivo XML em outro arquivo:
grep -Po '<add key="WorkstationID" value="\K[^"]+' web.config.txt | awk '{print "MapOPIWs = \04200000" $0}' >> fipayeps_def.cfg && echo '"' >> fipayeps_def.cfg
mas eu tenho esse problema de quebra de linha:
cat fipayeps_def.cfg
MapOPIWs = "000001769
"
quando o resultado desejado deve ser:
MapOPIWs = "000001769"
Alguma ideia para consertar isso?
Remova a quebra de linha final:
Ou, para facilitar a leitura, armazene a saída em uma variável, o que remove automaticamente a quebra de linha final:
Além disso, use um analisador XML real:
xpe
expup
podem ser alternativas adequadas (um pouco mais modernas na implementação, embora usando a mesma sintaxe XPath).Eu também recomendaria o XMLStarlet para XML como resposta , já que geralmente você não quer usar expressões regulares para sintaxes semelhantes a XML, mas se você as preferir para tarefas semelhantes, o perl faz um trabalho melhor de formatação do que o grep:
Você pode utilizar um grupo de captura e depois imprimi-lo com
$1
etc.Primeiro método:
Use
printf()
instead ofprint
inawk
para não terminar com uma nova linha.Segundo método:
Imprima a citação de fechamento em
awk
vez de com um separadoecho
: