Nehmen wir an, ich habe folgende Ausgabe von 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*
...
Ich suche nach einem Weg, wie ich die zweite Spalte einfärben könnte. Ich weiß, wie man sed verwendet, um ein Muster einzufärben, aber ich weiß nicht, wie man eine bestimmte Spalte einfärbt. Grundsätzlich muss ich '\033[0;31m'
nach dem ersten Leerzeichen und '\033[0m'
vor dem zweiten Leerzeichen einfügen . Oder gibt es vielleicht einen viel eleganteren Weg?
text-processing
colors
user1968963
quelle
quelle
ls --color -l | sed -e $'s/ *[^ ]* /\033[0;31m&\033[0m/'
Antworten:
Mit GNU wurde
grep
es mit PCRE- Unterstützung erstellt:Mit
sed
:Beachten Sie, dass bei Verwendung
setaf
davon ausgegangen wird, dass das Terminal ANSI-Farb-Escape-Sequenzen unterstützt. Sie können es also genauso gut hart codieren, wodurch es auch weniger ausführlich wird. Hier mitksh93
(auchbash
undzsh
) Syntax:Um auf die n- te Spalte zu verallgemeinern :
Verweise
quelle
grep -P
ist fantastisch. Vielen Dank.Etwas wie das?
Bearbeiten: Verwenden Sie die richtigen
tput
Unterbefehle.quelle
$1
wird jedoch die Spaltenausrichtung unterbrochen.rmso
ist es jedoch abzubrechensmso
(herausragender Modus), nichtbold
. Auf vielen Terminals (tput rmso
nicht nicht abbrechentput bold
).