Ich versuche nach Zeilen zu suchen, die mit "1" beginnen
ls -1 | grep ^1*
Es werden jedoch Zeilen zurückgegeben, die nicht mit 1 beginnen. Was fehlt mir hier?
Ich versuche nach Zeilen zu suchen, die mit "1" beginnen
ls -1 | grep ^1*
Es werden jedoch Zeilen zurückgegeben, die nicht mit 1 beginnen. Was fehlt mir hier?
Antworten:
Obwohl dies Ihre Frage nicht beantwortet, ist dies eine bessere Lösung für das, was Ihr Ziel zu sein scheint:
ls -ld 1*
Sie können ein Shell-Glob verwenden, um alle Dateien aufzulisten, die mit beginnen 1
. Beachten Sie, dass dies *
beim Shell-Globbing eine andere Bedeutung hat als bei regulären Ausdrücken.
*
steht ein Platzhalter für "0 oder mehr eines beliebigen Zeichens". Die Bedeutung von Regex wird in Otokans Antwort erklärt.
^ 1. * entspricht der ganzen Zeile, oder wie oben gesagt, ^ 1 hat die in der Zeile enthaltene Zeichenfolge erhalten.
Verschiedene Stile von Regex verwenden verschiedene Symbole, die Zeichen darstellen. Einige Optionen legen fest, welchen Stil Sie verwenden möchten. und verschiedene Optionen geben an, ob Sie die gesamte Zeile oder nur einen Teil davon oder die gesamte Eingabe als eine Zeichenfolge abgleichen möchten.
ls
Ausgabe mit grep begrenzen möchten, treten Probleme auf, wenn Dateinamen seltsame Zeichen enthalten, z. B. Zeilenumbrüche ... Viele andere Befehle (irgendwie nichtls
, zumindest nicht die Version, die ich überprüfen muss) Sie haben die Möglichkeit, eine durch Null getrennte Ausgabe zu erstellen, die Sie dann sicher verarbeiten könnengrep -z