sed -n '/search?q=/{s/.*search?q=//;p;}' infile > outfile
Explicação:
/search?q=/
faz com que o conjunto de comandos a seguir (em chaves) se aplique somente a linhas que contenham essa regex.
s/.*search?q=//
substitui a segunda parte (vazia) pela primeira parte.
Em seguida, p
imprime a linha.
O sinalizador -n
suprime a impressão padrão da linha.
Na verdade, você pode simplificar isso assim:
sed -n '/.*search?q=/{s///;p;}' infile > outfile
Porque quando o padrão alimentado para o comando s/
é deixado em branco, o último padrão usado é usado novamente.
EDIT: Obrigado a RobertL por apontar uma simplificação nos comentários:
sed -n 's/.*search?q=//p' infile > outfile
Isso usa o sinal p
no comando s
, que só imprime a linha se uma substituição foi feita.