скажем, у меня есть следующий вывод из 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*
...
Я ищу способ, как я мог бы раскрасить второй столбец. Я знаю, как использовать sed, чтобы раскрасить любой шаблон, но я не знаю, как раскрасить определенный столбец. В основном, мне нужно вставить '\033[0;31m'
после первого пробела и '\033[0m'
перед вторым пробелом. Или, может быть, есть гораздо более элегантный способ?
text-processing
colors
user1968963
источник
источник
ls --color -l | sed -e $'s/ *[^ ]* /\033[0;31m&\033[0m/'
Ответы:
С
grep
предоставленной GNU он был собран с поддержкой PCRE :С
sed
:Обратите внимание, что использование
setaf
предполагает, что терминал поддерживает escape-последовательности ANSI, поэтому вы можете также жестко его кодировать, что также сделает его менее многословным. Вот сksh93
(такжеbash
иzsh
) синтаксисом:Для обобщения на n- й столбец:
Ссылки
источник
grep -P
Это фантастично. Большое спасибо.Что-то вроде этого?
Изменить: используйте правильные
tput
подкоманды.источник
$1
нарушит выравнивание столбцов.rmso
стоит отменить,smso
хотя (режим ожидания) нетbold
. На многих терминалах (tput rmso
никак не отменитьtput bold
).