Datei mit tac zeichenweise umkehren

Datei mit tac zeichenweise umkehren

Ich möchte damit taceine Textdatei zeichenweise umkehren. Auf der Infoseite für Coreutils habe ich ein Beispiel gefunden, das lautet: #Eine Datei zeichenweise umkehrentac -r -s 'x\|[^x]'

Beim Ausführen scheint jedoch tac -r -sdie Standardeingabe zu öffnen, anstatt die Datei zu drucken. Was bedeutet das 'x\|[^x]'und was soll ich tun?

Mir ist auch aufgefallen, dass die Ausgabe für tac [file]und tac -r [file]gleich ist und sie gleich sind wie cat [file]. Ich kann die Zeichen-für-Zeichen-Umkehr immer noch nicht herausfinden.

Antwort1

Um eine Datei mithilfe von Zeichen für Zeichen umzukehren tac, verwenden Sie:

tac -r -s 'x\|[^x]'

Dies ist dokumentiert ininfo tac:

# Reverse a file character by character.
tac -r -s 'x\|[^x]'

-rbewirkt, dass das Trennzeichen als regulärer Ausdruck behandelt wird.-s SEPverwendet SEPals Trennzeichen. x\|[^x]ist ein regulärer Ausdruck, der mit jedem Zeichen übereinstimmt (sowohl mit als xauch mit denen, die nicht mit x) .

$ cat testfile
abc
def
ghi
$ tac -r -s 'x\|[^x]' testfile

ihg
fed
cba%
$

tac fileist nicht dasselbe wie, cat filees sei denn, filees hat nur eine Zeile. tac -r fileist dasselbe wie, tac fileweil das Standardtrennzeichen ist \n, was dasselbe ist, wenn es als regulärer Ausdruck behandelt wird und nicht.

Antwort2

Wenn Sie sich keine Sorgen machen über dieLF-Charakter(siehe die Kommentare von mosvy), dann ist die Verwendung viel effizienter revals tac -r -s 'x\|[^x]'die Weiterleitung an , tacfalls erforderlich.

$ cat testfile
abc
def
ghi
$ rev testfile
cba
fed
ihg
$ rev testfile|tac
ihg
fed
cba

Diese Lösung ist wesentlich günstiger, tac -r -s 'x\|[^x]'da reguläre Ausdrücke die Dinge tendenziell erheblich verlangsamen.

verwandte Informationen