Se cada sessão tiver um type correspondente e for set_to TRUE ou FALSE , você poderá usar sed e intervalos para isso:
sed '/type=m/,/set_to_/!d;/set_to_TRUE$/!d;s/.*\(sessionid-.*\);.*//' infile
Isso remove todas as linhas que não estão nos intervalos /type=m/,/set_to_/ . Também exclui as linhas nesses intervalos que não terminam em set_to_TRUE . O sessionid é então extraído da linha restante (se houver).
Alternativamente,
sed -n '/type=/h;/set_to_TRUE$/{
x;s/.*\(sessionid-.*\);type=m$//p
}' infile
deve imprimir o mesmo.
O último funciona sobrescrevendo o buffer de retenção em cada linha correspondente a type=
Em seguida, em cada linha correspondente a set_to_TRUE , os buffers são trocados e uma substituição é tentada - a saber, extraia sessionid de uma linha que termina em type=m - e, se bem-sucedida, o resultado será p rinted. Caso contrário, nada acontece porque a impressão automática está desativada por -n .
O acima assume que não há espaços em branco nas suas linhas.