Warum hat das sed-Befehl nicht mit Leerzeichen?
Dieses bash Skript soll, entfernen Sie die führenden Leerzeichen aus der grep-Ergebnisse:
#!/bin/bash
grep --color=always $@ | sed -r -e's/:[[:space:]]*/:/'
Aber es passt nicht zu den whitespace-Zeichen. Wenn ich die Ersetzung von text auf "-", das zeigt sich in der Ausgabe, aber es noch nie entfernt das Leerzeichen. Ich habe versucht es ohne die "*", Flucht der "*", mit "+", etc, aber nichts funktioniert. Weiß jemand, warum nicht?
(Ich bin mit sed version 4.2.1 auf Ubuntu 12.04.)
Danke an alle, dies ist mein modifiziertes Skript, was zeigt grep Farbe und auch Borten führende Leerzeichen:
#!/bin/bash
grep --color=always $@ | sed -r -e's/[[:space:]]+//'
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie zum entfernen der --color-option für diese zu arbeiten. Die Farben verwirren sed:
:[[:space:]]
in der Ausgabe vongrep --color
- stattdessen gibt es eine Reihe von\033[
escape-Sequenzen (kann je nach terminal) dort, zum färben.Die Farb-information-Ausgabe von
grep
erfolgt in form von Sonderzeichen-Sequenzen (siehe Antworten zu diese StackOverflow-Frage), also wenn der Doppelpunkt ist gefärbt und das Leerzeichen nicht, oder Umgekehrt, dann bedeutet das, dass eine dieser Sequenzen von Zeichen zwischen Ihnen, sosed
werden Sie nicht sehen, wie benachbarten Zeichen.Die Zeichenklasse \s passt auf die whitespace-Zeichen und
Beispiel:
ersetzt jede Folge von mindestens 3 Leerzeichen mit zwei Räumen.
Entfernt führende Leerzeichen.