Befehl, der reguläre Ausdrücke im Text hervorhebt?

Befehl, der reguläre Ausdrücke im Text hervorhebt?

Gibt es einen Befehl, der einen bestimmten Ausdruck im Text hervorhebt?

Ich suche nach etwas wie der Suchfunktion in Less, aber mit normaler Textausgabe auf stdout statt im lessViewer.

Beispiel:

$ cat test.txt | highlight "an"

Perspektiven füreingeordneter NATO-Abzug aus Afghanistaneinisteinerlitt zwei Rückschläge, als Präsident Hamid Karzai demeinbegrenzte Truppenstärke der USAeind die TalibeinFriedensgespräche gestoppt.

Der angegebene reguläre Ausdruck kann durch Farbe oder andere Mittel hervorgehoben werden.

Antwort1

Ich bin nicht sicher, ob dies auf eine Funktion oder nur auf einen versteckten Nebeneffekt zurückzuführen ist, aber dies funktioniert in GNU grep2.11:

grep --color 'an\|' test.txt

Antwort2

ackhat eine --passthruOption, die dies tut:

ack --passthru an test.txt
some_command | ack --passthru an -

Antwort3

Sie können dieses Skript von mir ausprobieren. Sie können entweder eine Datei angeben oder es nimmt Standardeingaben entgegen. Sie können einen regulären Python-Ausdruck für den Text definieren, den Sie hervorheben möchten. Hervorgehobener Text ist standardmäßig neongrün (hey, ich verwende einen schwarzen Hintergrund!). Sie können jedoch dieANSI-Farbcode.

#!/usr/bin/env python

import sys
import re

def highlight_text(text,pat):
    def replacement_funk(matchobj):  return '\x1b[42m%s\x1b[0m'%matchobj.group(0)
    return re.sub(pat,replacement_funk,text)

if __name__ == '__main__':
    if len(sys.argv) == 2:
        input = sys.stdin
        pat = sys.argv[1]
    elif len(sys.argv) == 3:
        input = open(sys.argv[2])
        pat = sys.argv[1]
    else:
        sys.stderr.write("colorme pattern [inputfile]")
    text = input.read()
    print highlight_text(text,pat)

Hier isteinBeispiel.

blessburn@blessburn:/tmp$ cat test.txt | ./colorme.py an

Perspektiven füreingeordneter NATO-Abzug aus Afghanistaneinisteinerlitt zwei Rückschläge, als Präsident Hamid Karzai demeinbegrenzte Truppenstärke der USAeind die TalibeinFriedensgespräche gestoppt.

blessburn@blessburn:/tmp$ ./colorme.py '(Af.*? |NA[\w]{2})' test.txt

Aussichten auf eine geordneteNATORückzug ausAfghanistanerlitt zwei Rückschläge, als Präsident Hamid Karzai eine Begrenzung der US-Truppen forderte und die Taliban die Friedensgespräche stoppten.

Antwort4

$cat test.txt | grep --colour=auto -C 100000 an

"color" funktioniert auch. Sie können auch einen Alias ​​definieren, damit grep immer die Option verwendet:

alias grep='grep --colour=auto -C 100000'

Fügen Sie das Obige irgendwo in /etc/profile.d/ oder Ihre .bashrc-Datei oder was auch immer ein.

verwandte Informationen