Gostaria de excluir todas as entradas do histórico que correspondem a uma determinada string. Eu encontrei este método :
grep -v searchstring "$HISTFILE" > /tmp/history
mv /tmp/history "$HISTFILE"
mas não leva em consideração os comentários HISTTIMEFORMAT, por exemplo:
#1517681911
echo 1
#1517681918
echo 2
#1517681931
echo 3
Se eu quisesse remover "echo 2", o comentário anterior também precisaria ser removido. Como posso fazer isso?
Sed é seu amigo (awk também pode fazer isso), você pode usar este código (supondo que cada linha correspondida realmente tenha uma linha do tempo):
ou para fazê-lo diretamente no arquivo de histórico:
O exemplo que você tem se tornará este:
Uma correspondência mais restritiva: apague apenas as linhas de tempo reais antes do padrão (compare as linhas que têm um campo que é um # seguido por dez dígitos)