Estou trabalhando com meu .bash_history
arquivo e quero identificar comandos repetitivos para limpeza.
Aqui está um trecho de exemplo:
...
#1713251479
sh lowbat.sh
#1713251495
nvim lowbat.sh
#1713252186
sh lowbat.sh
#1713253121
xclip -sel clip lowbat.sh
#1713253722
cd code/dotfiles/
#1713253766
git add mpv/
...
Meu objetivo é:
- Classifique os comandos em ordem alfabética para identificar facilmente entradas redundantes.
- Revise e edite a lista classificada (no
.bash_history_sorted
arquivo) para omitir comandos desnecessários. - Restaure a ordem original (classificada por carimbos de data e hora) no arquivo e, finalmente, substitua o arquivo
.bash_history_sorted
original por arquivo..bash_history
.bash_history_sorted
Isso pode ser conseguido usando o sort
comando?
EDIT: Acabei escrevendo meu próprio programa em linguagem C. Aqui está o código fonte , embora ainda esteja aberto a outras abordagens.
Dada 1 linha por comando, como na entrada de amostra postada, esta abordagem Decorar-Sort-Undecorate funcionará usando qualquer
awk
,sort
, etc .:Chame-o como
tst.sh .bash_history
e só responday
ao prompt final quando terminar o teste e estiver satisfeito por ele fazer o que deseja. Ele criará um arquivo de backup, por exemplo.bash_history.bk
, da entrada também, caso você precise.Use um nome de arquivo codificado
.bash_history_sorted
em vez de"$tmp2"
e/ou codificado.bash_history
em vez de,"$1"
se preferir.Se você não tiver certeza do que ele faz, basta executar o primeiro
awk
comando sozinho para ver o que ele faz, depois adicionar o pipe ao primeirosort
e ver o que ele faz, e assim por diante.