Como faço para cortar palavra e valor do valor do campo de comando de corte?

4

Este é o formato de linha do meu arquivo:

29.101.26.176 [11/Oct/2017:10:21:41 /pmk/clk?aff_id=5863&off_id=85635&trans_id=easoli4ddq8sssdf&prm2=23398_27530&device_id=864792012331091090 "Mozilla/5.0 Mobile

Eu preciso cortar aff_id=5863 e off_id=85635 e trans_id=easoli4ddq8sssdf .

Só posso cortar o campo específico do comando cut e não a palavra dentro do campo. Como posso separar a palavra dada?

    
por Rishabh Bahukhandi 13.10.2017 / 08:18

2 respostas

2

Abordagem curta grep :

grep -Eo '([ao]ff|trans)_id=[^&]+' file

A saída:

aff_id=5863
off_id=85635
trans_id=easoli4ddq8sssdf

----------

Ou solução awk para pedido de item fixo:

awk -F'[?&]' '{ printf "%s %s %s\n",$2,$3,$4 }' file

A saída:

aff_id=5863 off_id=85635 trans_id=easoli4ddq8sssdf
    
por 13.10.2017 / 09:01
1

Use o GNU sed para remover padrões correspondentes:

sed -E 's#([ao]ff|trans)_id=[^&]*&##g' infile

Se você deseja obter esse valor de string.

sed 's#.*\(aff_id=[^&]\).*\(off_id=[^&]\+\).*\(trans_id=[^&]\+\).*#  #' infile
aff_id=5863 off_id=85635 trans_id=easoli4ddq8sssdf
    
por 13.10.2017 / 08:28