$ cat histcopy.txt
1 l
2 ls
3 cat necopy.txt
4 netstat
5 cd | ls -l ; grep -i "3" histcopy.txt | echo
$ sed 's/^\s*\S*\s*//' histcopy.txt | tr ';|' '\n' | awk '!seen[$1]++{print $1}'
l
ls
cat
netstat
cd
grep
echo
-
sed 's/^\s*\S*\s*//'
para remover o espaço inicial e o número associado ao comando emhistory
output -
tr ';|' '\n'
replace;
e|
com caracteres de nova linha. Isso funcionará para a declaração atual do problema, mas não ajudará se houver comandos dentro de substituições, etc. -
awk '!seen[$1]++{print $1}'
comandos exclusivos
Lógica semelhante implementada com perl
sozinho
$ perl -lne 's/^\s*\S+//; (@a)= split/[;|]/; foreach (@a){($k) = /^\s*\K(\S+)/; print $k if !$seen{$k}++}' histcopy.txt
l
ls
cat
netstat
cd
grep
echo