Nếu bạn muốn ép "khoảng trắng", bạn sẽ muốn sử dụng các bộ ký tự được xác định trước của tr ": blank:" (tab khoảng trắng ngang và khoảng trắng) hoặc ": space:" (khoảng trắng chính xác):
/bin/echo -e "val1\t\tval2 val3" | tr -s "[:blank:]"
Ví dụ đã được chạy trên Red Hat 5 (GNU tr).
Trong trường hợp của tôi, tôi muốn bình thường hóa tất cả các khoảng trắng thành một không gian duy nhất để tôi có thể dựa vào không gian như là một trình phân phối.
Như được chỉ ra bởi bình luận thứ hai của dastrobu, tôi đã bỏ lỡ từ ngữ trong trang người đàn ông:
-s uses the last specified SET, and occurs after translation or deletion.
Điều này cho phép chúng tôi loại bỏ tr đầu tiên. Kudo phải đi tìm sự kiên nhẫn của anh ấy trước sự dày đặc của tôi.
Trước đó, phân tích cổng từ cấu hình Redis. tập tin:
grep "^port" $redisconf | tr "[:blank:]" " " | tr -s "[:blank:]" | cut -d" " -f2
Sau đó, với SET2 được chỉ định với bóp:
grep "^port" $redisconf | tr -s "[:blank:]" " " | cut -d" " -f2
Đầu ra:
6379
Để biết thêm chi tiết bao gồm các sắc thái của khoảng trắng
Chứng minh rằng việc ép một mình thất bại khi các ký tự hỗn hợp liên tiếp rơi vào lớp nhân vật [: blank:] có liên quan:
/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
Lưu ý: Hai trường chuỗi của tôi ở định dạng printf được phân tách bằng 1 khoảng trắng, 1 tab, 1 khoảng trắng. Sau khi vắt thì trình tự này vẫn tồn tại. Trong đầu ra của bãi chứa Octal, điều này được thể hiện bằng chuỗi ascii 040 011 040.