Tenho o seguinte arquivo:
hello there. let's try&ACCT=1&bla bla bla&EX=1118&anything ss &SERIAL=1011&DEAL=NO
BLA BLA BLA&TOM=1&ACCT=2&LSLSLSLSL&none=1&EX=1218&lord=1&ok=1&SERIAL=201&flag=non
do qual preciso extrair os valores do campo de ACCT=
, EX=
e SERIAL=
para que a saída se torne:
1,11/18,1011
2,12/18,201
onde EX
é sempre um número de 4 dígitos onde eu quero inserir a /
como o caractere do meio.
Com base em sua entrada de exemplo, que coloquei em um arquivo chamado test.in, o seguinte comando awk deve fornecer a saída desejada.
O que isso faz é tratar o & como um separador de campo. Em seguida, ele processa cada campo em uma determinada linha verificando se esse campo começa com ACCT=, EX= ou SERIAL=. Se esse campo for encontrado, esse campo será atribuído à variável apropriada. O subcomando é então usado para remover o início dessa variável. Isso apenas fornece o valor associado a essa chave.
Como você precisa de uma barra (/) após os 2 primeiros dígitos da tecla EX, esse é o outro sub para EX. O e comercial (&) é uma referência inversa que pega os primeiros 2 dígitos.
Depois que todos os campos forem processados, ele imprime os valores encontrados nessa linha.
Tentei com o método abaixo e funcionou bem como esperado
resultado
Usando
sed
&cat
eu atingi um estágio de solução :)ENTÃO
Tente também esta abordagem passo a passo simples
sed
:Tentei com os passos abaixo e funcionou bem