history | grep -o 'github\.com.*' | tr '/' ' ' | sort -k3 | uniq | uniq -D -f2
Explicação
-
grep -o 'github\.com.*'obtém as linhas que incluemgithub.come 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 porqueuniqnão tem uma opção para definir um delimitador que não seja espaço em branco ... -
sort -k3classifica as linhas usando o terceiro (último) campo, colocando as linhas com o mesmoapp_name.gitjuntos -
uniqremove linhas duplicadas -
uniq -D -f2ignorando os dois primeiros campos, imprima apenas as linhas duplicadas (portanto, imprima a linha apenas se houver mais de uma instância deapp_namedepois 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)