Wie kann ich grep
Registerkarte ( \t ) in Dateien auf der Unix-Plattform?
Antworten
Zu viele Anzeigen?Die "sed-as-grep"-Methode, bei der die Tabulatoren durch ein sichtbares Zeichen persönlicher Präferenz ersetzt werden, ist meine bevorzugte Methode, da sie sowohl deutlich zeigt, welche Dateien die angeforderten Informationen enthalten, als auch, wo sie innerhalb der Zeilen platziert sind:
sed -n 's/\t/\*\*\*\*/g' file_name
Wenn Sie die Zeilen-/Dateiinformationen oder andere grep-Optionen verwenden möchten, aber auch den sichtbaren Ersatz für das Tabulatorzeichen sehen wollen, können Sie dies erreichen, indem Sie
grep -[options] -P '\t' file_name | sed 's/\t/\*\*\*\*/g'
Ein Beispiel:
$ echo "A\tB\nfoo\tbar" > test
$ grep -inH -P '\t' test | sed 's/\t/\*\*\*\*/g'
test:1:A****B
test:2:foo****bar
EDIT: Offensichtlich ist das oben genannte nur nützlich für die Anzeige von Dateiinhalten, um Registerkarten zu finden --- wenn das Ziel ist, Registerkarten als Teil einer größeren Skripting-Sitzung zu behandeln, dient dies keinen nützlichen Zweck.
Sie können eingeben
grep \\t foo
oder
grep '\\t' foo
um nach dem Tabulatorzeichen in der Datei foo zu suchen. Sie können wahrscheinlich auch andere Escape-Codes verwenden, obwohl ich nur folgende getestet habe \n. Obwohl es ziemlich zeitaufwendig ist und nicht klar ist, warum Sie das wollen, können Sie in zsh auch das Tabulatorzeichen eingeben, zurück zum Anfang, grep und das Tabulatorzeichen mit Anführungszeichen einschließen.
- See previous answers
- Weitere Antworten anzeigen