digamos, eu tenho a seguinte saída de ls:
$ ls -lAhF /bin
-rwxr-xr-x 1 root root 905K Apr 10 2010 bash*
-rwxr-xr-x 3 root root 31K Dec 26 2011 bunzip2*
-rwxr-xr-x 1 root root 505K Nov 15 2010 busybox*
-rwxr-xr-x 3 root root 31K Dec 26 2011 bzcat*
lrwxrwxrwx 1 root root 6 Jun 24 2012 bzcmp -> bzdiff*
...
Eu estou procurando uma maneira, como eu poderia colorir a segunda coluna. Eu sei como usar o sed para colorir qualquer padrão, mas não sei como colorir uma coluna específica. Basicamente, eu preciso inserir '\033[0;31m'
após o primeiro espaço e na '\033[0m'
frente do segundo espaço. Ou talvez haja uma maneira muito mais elegante?
text-processing
colors
user1968963
fonte
fonte
ls --color -l | sed -e $'s/ *[^ ]* /\033[0;31m&\033[0m/'
Respostas:
Com o GNU
grep
fornecido, ele foi criado com o suporte do PCRE :Com
sed
:Observe que usar
setaf
assume que o terminal suporta seqüências de escape de cores ANSI; portanto, é possível codificá-lo com firmeza, o que o tornaria menos detalhado também. Aqui comksh93
(tambémbash
ezsh
) sintaxe:Para generalizar para a enésima coluna:
Referências
fonte
grep -P
é fantástico. Muito obrigado.Algo assim?
Editar: use os
tput
subcomandos adequados .fonte
$1
interromperá o alinhamento da coluna.rmso
é para cancelarsmso
(modo de destaque), nãobold
. Em muitos terminais (tput rmso
se não cancelartput bold
).