Kostenlose Verwendung catin beiden Fällen. Das erste könnte geschrieben grep ' ' a.txt, das zweite ähnlich geändert werden.
MadHatter
1
Beachten Sie, dass \sauch Tabulator, Return, vertikaler Tabulator, Formularvorschub und technisch gesehen Zeilenumbruch übereinstimmen. Wenn Sie nur Speicherplatz und Tabulator zuordnen möchten, verwenden Sie [[:blank:]]oder [ \t].
Bis auf weiteres angehalten.
Mit gnu grep können Sie die Anzahl der Übereinstimmungen ( -mOption) auf eins beschränken ...
sendmoreinfo
Dies ist einfacher egrep "\ s" a.txt
Antworten:
6
Wenn Sie bei der Eingabe Ihrer Frage nur ein Leerzeichen eingeben möchten, verwenden Sie Folgendes:
Angenommen, Sie möchten Zeilen ausschließen, die mehr als ein benachbartes Leerzeichen enthalten, setzt dies explizit voraus, dass es ein Leerzeichen gibt, dem kein Leerzeichen vorangeht und auf das kein Leerzeichen folgt.
Beachten Sie außerdem, dass nicht alle Versionen von grep die Steuerelemente für reguläre Ausdrücke unterstützen.
Sie können alle diese umgekehrten Schrägstriche im letzten Beispiel weglassen und die Lesbarkeit verbessern, indem Sie die von POSIX angegebene -EOption verwenden, die erweiterte reguläre Ausdrücke aktiviert. grep -E '(^|[^ ]) ([^ ]|$)' a.txtIn jedem Fall wird der Backslash vor dem Leerzeichen nicht benötigt und es fehlt einer vor der letzten schließenden Klammer. Für Versionen grep, die dies verstehen \s, können Sie den Ausdruck für Nicht-Leerzeichen auch [^\s]auf\S
Warum nur zwei Leerzeichen finden? Ich denke, es passt zu jedem Raum.
Cuonglm
1
@Gnouc: Variante 2 entspricht beim Schreiben '\s 'mindestens zwei Leerzeichen hintereinander, da er nach der Zeichengruppe ein Leerzeichen eingefügt hat \s.
Sven
Du hast recht, ich sehe den Raum danach nicht \s, mein Fehler.
cat
in beiden Fällen. Das erste könnte geschriebengrep ' ' a.txt
, das zweite ähnlich geändert werden.\s
auch Tabulator, Return, vertikaler Tabulator, Formularvorschub und technisch gesehen Zeilenumbruch übereinstimmen. Wenn Sie nur Speicherplatz und Tabulator zuordnen möchten, verwenden Sie[[:blank:]]
oder[ \t]
.-m
Option) auf eins beschränken ...Antworten:
Wenn Sie bei der Eingabe Ihrer Frage nur ein Leerzeichen eingeben möchten, verwenden Sie Folgendes:
oder für POSIX-Varianten:
oder die weniger lesbare POSIX-Variante:
Angenommen, Sie möchten Zeilen ausschließen, die mehr als ein benachbartes Leerzeichen enthalten, setzt dies explizit voraus, dass es ein Leerzeichen gibt, dem kein Leerzeichen vorangeht und auf das kein Leerzeichen folgt.
Beachten Sie außerdem, dass nicht alle Versionen von grep die Steuerelemente für reguläre Ausdrücke unterstützen.
quelle
-E
Option verwenden, die erweiterte reguläre Ausdrücke aktiviert.grep -E '(^|[^ ]) ([^ ]|$)' a.txt
In jedem Fall wird der Backslash vor dem Leerzeichen nicht benötigt und es fehlt einer vor der letzten schließenden Klammer. Für Versionengrep
, die dies verstehen\s
, können Sie den Ausdruck für Nicht-Leerzeichen auch[^\s]
auf\S
Ich glaube ich habe es gefunden:
quelle
Variante 2 findet nur zwei Leerzeichen. Wenn Sie
'\s'
stattdessen verwenden, funktionieren beide Varianten.Sie können dies leicht selbst testen. Was ist Ihre eigentliche Frage?
quelle
'\s '
mindestens zwei Leerzeichen hintereinander, da er nach der Zeichengruppe ein Leerzeichen eingefügt hat\s
.\s
, mein Fehler.