Si vous voulez utiliser "l'espace blanc", vous voudrez utiliser les jeux de caractères prédéfinis de tr ": blank:" (onglet et espace d'espacement horizontal) ou ": space:" (espaces blancs réels):
/bin/echo -e "val1\t\tval2 val3" | tr -s "[:blank:]"
Des exemples ont été exécutés sur Red Hat 5 (GNU tr).
Dans mon cas, je voulais normaliser tous les espaces blancs en un seul espace afin de pouvoir compter sur cet espace en tant que delmitter.
Comme l'a souligné le deuxième commentaire de dastrobu, j'ai raté le libellé de la page de manuel:
-s uses the last specified SET, and occurs after translation or deletion.
Cela nous permet d’éliminer le premier tr. Kudo est à la recherche de ses patients face à ma densité.
Avant, analyse du port de Redis config. fichier:
grep "^port" $redisconf | tr "[:blank:]" " " | tr -s "[:blank:]" | cut -d" " -f2
Après, avec SET2 étant spécifié avec le squeeze:
grep "^port" $redisconf | tr -s "[:blank:]" " " | cut -d" " -f2
Sortie:
6379
Pour plus de détails sur les nuances des espaces
Démontrez les cas où squeeze seul échoue lorsque des caractères mélangés successifs appartenant à la classe de caractères [: blank:] sont impliqués:
/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
Remarque: Mes deux champs de chaîne au format printf sont séparés par 1 espace, 1 onglet, 1 espace. Après la compression, cette séquence existe toujours. Dans la sortie du vidage Octal, cela est représenté par la séquence ascii 040 011 040.