Eğer "boşluk" sıkmak istiyorsanız, tr'in önceden tanımlanmış karakter kümelerini ": blank:" (yatay boşluk sekmesi ve boşluk) veya ": boşluk:" (dikey boşluk):
/bin/echo -e "val1\t\tval2 val3" | tr -s "[:blank:]"
Örnekler Red Hat 5 (GNU tr) üzerinde yapıldı.
Benim durumumda, tüm boşlukları tek bir alana normalleştirmek istedim, böylece uzaya bir verici olarak güvenebilecektim.
Dastrobu'nun ikinci yorumunda belirtildiği gibi, man sayfasındaki ifadeleri kaçırdım:
-s uses the last specified SET, and occurs after translation or deletion.
Bu, ilk tr'i ortadan kaldırmamızı sağlar. Kudo, dürüstlüğüm karşısında sabrını araştırdı.
Daha önce Redis config'den port ayrıştırma. dosya:
grep "^port" $redisconf | tr "[:blank:]" " " | tr -s "[:blank:]" | cut -d" " -f2
Ardından SET2 sıkma ile belirtilmiş olarak:
grep "^port" $redisconf | tr -s "[:blank:]" " " | cut -d" " -f2
Çıktı:
6379
Boşluk nüanslarını kapsayan daha fazla ayrıntı için
[: Blank:] karakter sınıfına giren art arda gelen karışık karakterler söz konusu olduğunda, sıkmanın nerede başarısız olduğunu gösterin:
/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
Not: Printf formatındaki iki string alanım 1 boşluk, 1 sekme ve 1 boşluk ile ayrılır. Sıkıştırmadan sonra bu dizi hala var. Octal dökümü çıktısında bu, 040 011 040 ascii dizisi ile temsil edilir.