Wenn Sie "Leerzeichen" ausdrücken möchten, müssen Sie die vordefinierten Zeichensätze von tr verwenden: ": Leerzeichen:" (horizontale Leertaste und Leerzeichen) oder ": Leerzeichen:" (verisches Leerzeichen):
/bin/echo -e "val1\t\tval2 val3" | tr -s "[:blank:]"
Beispiele wurden unter Red Hat 5 (GNU tr) ausgeführt.
In meinem Fall wollte ich alle Leerzeichen auf ein einzelnes Leerzeichen normieren, damit ich mich auf das Leerzeichen als Delmitter verlassen konnte.
Wie in Dastrobus zweitem Kommentar hervorgehoben, habe ich den Wortlaut in der Manpage verpasst:
-s uses the last specified SET, and occurs after translation or deletion.
Dies ermöglicht es uns, den ersten tr zu eliminieren. Kudo muss angesichts meiner Dichte nach seiner Geduld suchen.
Vorher Parsing-Port von Redis Config. Datei:
grep "^port" $redisconf | tr "[:blank:]" " " | tr -s "[:blank:]" | cut -d" " -f2
Danach wird SET2 mit squeeze angegeben:
grep "^port" $redisconf | tr -s "[:blank:]" " " | cut -d" " -f2
Ausgabe:
6379
Weitere Informationen zu den Weißraum-Nuancen
Zeigen Sie, wo Squeeze alleine fehlschlägt, wenn aufeinanderfolgende gemischte Zeichen der Zeichenklasse [: blank:] beteiligt sind:
/usr/bin/printf '%s \t %s' id myname | tr -s "[:blank:]" | od -cb
0000000 i d \t m y n a m e
151 144 040 011 040 155 171 156 141 155 145
0000013
Hinweis: Meine zwei Zeichenkettenfelder im printf-Format sind durch 1 Leerzeichen, 1 Tabulator, 1 Leerzeichen getrennt. Nach dem Auspressen ist diese Reihenfolge noch vorhanden. In der Ausgabe des Octal-Dumps wird dies durch die ASCII-Sequenz 040 011 040 dargestellt.