Ich suche nach grep, um alle Zeichen anzuzeigen, die nicht mit Zahlen beginnen. Ich habe so etwas gemacht:
grep -v '^[1-2]*[a-zA-Z]?' -o
aber es funktioniert nicht. Hast du eine Idee für eine reg exp?
grep
regular-expression
Paweł Jaworowski
quelle
quelle
-v
mit-o
verursachen verursachengrep
keine Ausgabe.grep
Verwendet standardmäßig grundlegende reguläre Ausdrücke. Dies bedeutet, dass Sie?
als buchstäbliches Fragezeichen behandelt werden. Entferne entweder das Fragezeichen\?
oder verwende die-E
Option fürextended
reguläre Ausdrücke. In diesem Fall?
handelt es sich um ein Musterzeichen.Antworten:
grep -v '^[0-9]'
Gibt alle Zeilen aus, die nicht
-v
mit Zeilen übereinstimmen, die^
mit einer Zahl beginnen[0-9]
Zum Beispiel
oder wenn Sie alle Wörter entfernen möchten, die mit einer Ziffer beginnen
oder mit Verknüpfungen und Behauptungen
Zum Beispiel
quelle
\> Matches the null string at the end of a word. This is equivalent to
[[:>:]] '. `Es hängt davon ab, wie Sie eine Zeichenfolge definieren (z. B. ob Sie Satzzeichen zur Zeichenfolge zählen oder nicht). Trotzdem können Sie von so etwas ausgehen
quelle
So entfernen Sie alle Wörter aus einer Zeile, die mit einer Zahl beginnen
sed
:... oder wenn Sie nur Wörter möchten, die nicht mit Zahlen beginnen, die jeweils in einer separaten Zeile gedruckt sind:
... das oben genannte sollte ziemlich gut tun. Sie sollten die
\n
ewline-y///
Übersetzung für Teiler anpassen, die Sie für relevant halten. Und,sed
je nach Implementierung, könnte man auch einen tatsächlichen wollen<tab>
anstelle des\t
Backslash zu entkommen.quelle
!
vor den'"'
Tausch stellen, aber wenn Sie verwendenbash
, möchten Sie vielleichtset +H
oder wennzsh
dannset -K
. Meiner Meinung nach ist jede zitierte!
Erweiterung Wahnsinn. Sie können auch Heredocs verwenden"${0#-}" <<\CMD\nyour cmd strings\nCMD\n
, um Skriptverhalten in interaktiven Shells zu erhalten."${0#-}" <<...
Tipp!"${0#-}" -s -- arg list <<\CMD\n...
, können Sie die Positionsparameter auch beim Aufruf festlegen. Verwenden"$@"
oder*
ist oft nützlich für mich anstelle vonarg list
. Und mitln -s "$(command -v "${0#-}")" /tmp/new_name; cd tmp; new_name <<\CMD\n...
dir kann man ein neues bekommen$0
und trotzdem stdin handhaben.