Якщо ви хочете видавити "білий пробіл", ви хочете використовувати попередньо визначені набори символів tr ": blank:" (горизонтальна вкладка пробілу та пробіл) або ": space:" (вертикальна пробіл):
/bin/echo -e "val1\t\tval2 val3" | tr -s "[:blank:]"
Приклади наводили на Red Hat 5 (GNU tr).
У моєму випадку я хотів нормалізувати весь пробіл до єдиного простору, щоб я міг розраховувати на простір як дельмітер.
Як вказує другий коментар дастробу, я пропустив формулювання на сторінці чоловіка:
-s uses the last specified SET, and occurs after translation or deletion.
Це дозволяє усунути першу тр. Кудо знущається за свої терпіння перед моєю щільністю.
Раніше розбирався порт з конфігурації Redis. файл:
grep "^port" $redisconf | tr "[:blank:]" " " | tr -s "[:blank:]" | cut -d" " -f2
Після того, як SET2 задається за допомогою стискання:
grep "^port" $redisconf | tr -s "[:blank:]" " " | cut -d" " -f2
Вихід:
6379
Детальніше про нюанси пробілу
Продемонструйте, що стискання поодинці не вдається, коли задіяні послідовні змішані символи, які потрапляють у [: blank:] клас символів:
/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
Примітка. Мої два рядкові поля у форматі printf розділені 1 пробілом, 1 вкладкою, 1 пробілом. Після видавлювання ця послідовність все ще існує. На виході октального відвалу це представлено послідовністю ascii 040 011 040.