548 Stimmen

grep eine Registerkarte in UNIX

Wie kann ich grep Registerkarte ( \t ) in Dateien auf der Unix-Plattform?

2voto

ghostdog74 Punkte 305138

Gawk verwenden, setzen Sie das Feldtrennzeichen auf Tabulator ( \t ) und prüfen Sie die Anzahl der Felder. Wenn mehr als 1, dann gibt es Registerkarten

awk -F"\t" 'NF>1' file

2voto

Raman Punkte 14828

Die $' \t Die in anderen Antworten angegebene Notation ist shellspezifisch - sie scheint in bash und zsh zu funktionieren, ist aber nicht universell.

HINWEIS: Das Folgende gilt für die fish Shell und funktioniert nicht in Bash :

In der fish Shell kann man eine nicht-quotierte \t zum Beispiel:

grep \t foo.txt

Oder man kann die Hex- oder Unicode-Schreibweise verwenden, z.B.:

grep \X09 foo.txt
grep \U0009 foo.txt

(diese Notationen sind für esoterischere Zeichen nützlich)

Da diese Werte nicht in Anführungszeichen gesetzt werden müssen, können Sie die in Anführungszeichen gesetzten und die nicht in Anführungszeichen gesetzten Werte durch Verkettung kombinieren:

grep "foo"\t"bar"

1voto

AIXroot Punkte 66

Auf ksh verwendete ich

grep "[^I]" testfile

0voto

Guido Flohr Punkte 1662

Sie können auch einen Perl-Einzeiler anstelle von grep bzw. grep -P :

perl -ne 'print if /\t/' FILENAME

0voto

odoncaoa Punkte 1

Diese alternativen binären Identifizierungsmethoden sind voll funktionsfähig. Und die mit awk gefällt mir sehr gut, da ich mir die syntaktische Verwendung mit einzelnen Binärzeichen nicht ganz merken konnte. Es sollte jedoch auch möglich sein, einer Shell-Variablen einen Wert in einer POSIX-portablen Weise zuzuweisen (d.h. TAB= echo "@" | tr "\100" "\011" ), und verwenden Sie es dann von dort aus überall in einer POSIX-portablen Art und Weise (d.h. grep "$TAB" Dateiname). Diese Lösung funktioniert zwar gut mit TAB, aber auch mit anderen Binärzeichen, wenn ein anderer gewünschter Binärwert in der Zuweisung verwendet wird (anstelle des Wertes für das TAB-Zeichen "tr").

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X