Jika Anda ingin memeras "spasi putih" Anda akan ingin menggunakan set karakter yang telah ditentukan sebelumnya tr:: blank: "(tab dan spasi spasi putih horisontal) atau": spasi: "(spasi putih verical):
/bin/echo -e "val1\t\tval2 val3" | tr -s "[:blank:]"
Contoh dijalankan pada Red Hat 5 (GNU tr).
Dalam kasus saya, saya ingin menormalkan semua spasi putih menjadi satu ruang sehingga saya bisa mengandalkan ruang sebagai delmitter.
Seperti yang ditunjukkan oleh komentar kedua dastrobu, saya melewatkan kata-kata di halaman manual:
-s uses the last specified SET, and occurs after translation or deletion.
Ini memungkinkan kita untuk menghilangkan tr pertama. Kudo untuk bersabar atas kesabarannya di hadapan kepadatanku.
Sebelumnya, parsing port dari Redis config. mengajukan:
grep "^port" $redisconf | tr "[:blank:]" " " | tr -s "[:blank:]" | cut -d" " -f2
Setelah, dengan SET2 ditentukan dengan pemerasan:
grep "^port" $redisconf | tr -s "[:blank:]" " " | cut -d" " -f2
Keluaran:
6379
Untuk lebih jelasnya mencakup nuansa whitespace
Tunjukkan di mana squeeze saja gagal ketika karakter campuran berturut-turut yang termasuk dalam kelas karakter [: blank:] terlibat:
/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
Catatan: Dua bidang string saya dalam format printf dipisahkan oleh 1 spasi, 1 tab, 1 spasi. Setelah ditekan urutan ini masih ada. Dalam output dump Octal ini diwakili oleh urutan ascii 040 011 040.