o que há de errado com
awk '( $7 ~ /m=xxx/ ) && (( $7 ~ /a=xxx ) || ( $7 ~ /doajax=xxx/ )) {
split($7,A,"&") ; $7 = A[1] "&" A[2] ;print ;} ' logfile
onde
-
&&
significa lógica e -
||
logical ou, -
split($7,A,"&")
dividirá o 7º campo em array, usando & como separador, -
$7 = A[1] "&" A[2]
alteração (não no arquivo) 7º campo para o subcampo selecionado -
print
print.
(isso pode ser um alinhado, eu rompi a linha para legibilidade).
isto dá
192.xx.x.x - - [11/Apr/2017:09:59:xx +0200] "POST /userx/index.php?m=xxxx&doajax=xxxx
192.xx.x.x - - [11/Apr/2017:09:59:xx +0200] "POST /userx/index.php?m=xxx&a=xxxx
Se você quiser uma linha completa com doajax
:
awk '/doajax/ { print ; next ; }
( $7 ~ /m=xxx/ ) && ( $7 ~ /a=xxx/ ) { split($7,A,"&") ; $7 = A[1] "&" A[2] ;print ;}'