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 -
printprint.
(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 ;}'