Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình Bash

Làm Chủ Lệnh 'tr' Linux: Chức Năng, Cú Pháp & Cách Dùng Thực Tế

Lệnh tr (translate - chuyển đổi) trong Linux đọc văn bản từ đầu vào chuẩn, thực hiện một số sửa đổi trên văn bản, sau đó gửi nó đến đầu ra chuẩn. Bài viết này giải thích và chỉ ra lý do và cách bạn có thể sử dụng nó.

Cú Pháp Lệnh tr

Dưới đây là cú pháp bạn cần để sử dụng lệnh:

tr OPTIONS SET1 [SET2]

Lưu ý rằng:

  • OPTIONS nên là danh sách các tùy chọn từ bảng dưới đây
  • Các ký tự trong SET1 sẽ được thay thế bằng các ký tự ở vị trí tương ứng trong SET2
    • Chúng là tùy chọn – một số OPTIONS có khả năng thực hiện chuyển đổi, nên cả hai SET không nhất thiết đều cần thiết.
  • Bạn sẽ nhận thấy thiếu văn bản được xử lý – điều này được cung cấp bằng cách chuyển hướng chuẩn – xem thêm ở các ví dụ dưới đây.

Dưới đây là các OPTIONS có sẵn – lấy trực tiếp từ hướng dẫn sử dụng:

TÙY CHỌN Mô tả
-c Sử dụng phần bổ sung của SET1
-d Xóa ký tự trong SET1, không chuyển đổi
-s Thay thế mỗi chuỗi ký tự lặp lại được liệt kê trong SET cuối cùng bằng một lần xuất hiện duy nhất của ký tự đó
-t Trước tiên, cắt ngắn SET1 đến độ dài của SET2

Nếu bạn cần thay thế hoặc xóa các ký tự đặc biệt, như dòng mới và tab trong các SET, bạn có thể dùng các chuỗi sau:

Chuỗi diễn giải Ký tự đặc biệt
\NNN Ký tự với giá trị bát phân NNN (1 đến 3 chữ số bát phân)
\\ Gạch chéo ngược
\b Backspace
\n Dòng mới
\r Return
\t Tab ngang
[:alnum:] Tất cả chữ cái và chữ số
[:alpha:] Tất cả chữ cái
[:blank:] Tất cả khoảng trắng ngang
[:digit:] Tất cả chữ số
[:lower:] Tất cả chữ cái thường
[:space:] Tất cả khoảng trắng ngang hoặc dọc
[:upper:] Tất cả chữ cái HOA

Tôi chỉ đưa ra một số tùy chọn/chuỗi thường dùng ở trên (vì có khá nhiều). Bạn có thể xem danh sách đầy đủ các tùy chọn lệnh trong hướng dẫn sử dụng, có thể tìm thấy bằng cách chạy:

man tr

Ví Dụ Lệnh tr

Dưới đây là một vài ví dụ về cách dùng lệnh tr.

Đây chỉ là ví dụ; bạn có thể kết hợp tùy chọn và chuỗi để đạt kết quả mong muốn của riêng bạn.

Xóa Ký Tự

Ví dụ dưới đây xóa các ký tự được chỉ định từ một chuỗi. Đầu ra của lệnh echo được piped (dẫn ống) đến lệnh tr.

Đây là cách lệnh tr nhận văn bản bạn muốn chuyển đổi – nó phải được cung cấp làm đầu vào chuẩn qua piping hoặc chuyển hướng.

echo "axbxcxdx" | tr -d 'x'

Ở trên, tùy chọn -d chỉ dẫn tr xóa ký tự x từ đầu ra của lệnh echo.

Điều này sẽ trả về:

abcd

chữ thường thành CHỮ HOA

Ví dụ dưới đây dùng các chuỗi diễn giải upper/lower để thay thế tất cả ký tự thường bằng ký tự HOA:

echo "aBcDeFg" | tr '[:lower:]' '[:upper:]'

Điều này sẽ xuất ra:

ABCDEFG

Thay Thế Ký Tự

tr có lẽ thường dùng nhất để thay thế ký tự trong chuỗi – ví dụ, thay thế khoảng trắng bằng gạch ngang:

echo "frogs and fish" | tr '[:blank:]' '-'

Sẽ xuất ra:

frogs-and-fish

Ví dụ này dùng hai SET – set đầu tiên chứa định danh cho khoảng trắng/trắng (ví dụ: dấu cách, tab), set thứ hai chứa gạch ngang – nên khoảng trắng được thay bằng gạch ngang (SET2 thay thế SET1).

Điều này có thể hữu ích khi tạo tên tệp để tải lên trang web và đảm bảo không có dấu cách trong tên tệp đó.

Thay Thế Nhiều Ký Tự

Trong ví dụ cuối, mỗi set chỉ chứa một ký tự. Nhiều ký tự có thể được cung cấp để thực hiện nhiều thay thế cùng lúc:

echo "frogs and fish" | tr 'sf' 'SF'

Sẽ xuất ra:

FrogS and FiSh

Như bạn thấy, các chữ cái tương ứng trong set đầu tiên đã được thay thế bằng những cái từ set thứ hai.

Xóa Ký Tự Lặp Lại

Dưới đây, khoảng trắng lặp lại không cần thiết bị xóa khỏi một số văn bản:

echo 'Absolutely spaced out' | tr -s '[:space:]'

Sẽ xuất ra:

Absolutely spaced out

Định danh [:blank:] được dùng với tùy chọn -s để xác định và xóa khoảng trắng lặp lại.