history | grep -o 'github\.com.*' | tr '/' ' ' | sort -k3 | uniq | uniq -D -f2
Explicação
-
grep -o 'github\.com.*'
obtém as linhas que incluemgithub.com
e apara o início da linha (como o número do item no histórico, etc.) para facilitar o contato com os campos -
tr '/' ' '
change/
em espaços porqueuniq
não tem uma opção para definir um delimitador que não seja espaço em branco ... -
sort -k3
classifica as linhas usando o terceiro (último) campo, colocando as linhas com o mesmoapp_name.git
juntos -
uniq
remove linhas duplicadas -
uniq -D -f2
ignorando os dois primeiros campos, imprima apenas as linhas duplicadas (portanto, imprima a linha apenas se houver mais de uma instância deapp_name
depois de remover linhas completamente idênticas, indicando que há vários usuários para o mesmoapp_name
)
Se você quiser evitar que o próprio comando apareça na saída, você pode canalizar de grep -o 'github\.com.*' ~/.bash_history
em vez de history | grep -o 'github\.com.*'
(embora isso não inclua comandos da sessão atual)