Liên hệProfile
Danh mục

Mục Lục

    Lệnh tr Linux là gì? Cơ chế hoạt động và cách sử dụng chi tiết

    Nguyễn Hưng

    Ngày đăng:

    14/01/2026

    Cập nhật lần cuối:

    14/01/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    14/01/2026

    Cập nhật lần cuối:

    14/01/2026

    Mục lục

    Lệnh tr Linux là một tiện ích dòng lệnh dùng để chuyển đổi hoặc xóa các ký tự trong dòng dữ liệu đầu vào với cơ chế hoạt động là nhận dữ liệu từ đầu vào tiêu chuẩn (stdin), thao tác thay đổi hoặc loại bỏ các ký tự theo yêu cầu, rồi xuất ra đầu ra tiêu chuẩn (stdout). Trong bài viết này, mình sẽ cung cấp một hướng dẫn toàn diện về lệnh tr trong Linux, từ các khái niệm cơ bản đến những kỹ thuật ứng dụng nâng cao.

    Những điểm chính

    • Định nghĩa lệnh tr trong Linux: Hiểu rõ khái niệm, mục đích và cú pháp cơ bản của lệnh tr trong việc chuyển đổi, xóa hoặc nén ký tự.
    • Cơ chế hoạt động: Nắm được quy trình xử lý dữ liệu của tr để áp dụng lệnh một cách chính xác.
    • Các tùy chọn quan trọng: Biết cách sử dụng các tùy chọn chính để thực hiện các thao tác nâng cao như xóa, nén và đảo ngược bộ ký tự.
    • 9 ví dụ sử dụng hữu ích: Thành thạo các ứng dụng thực tế của tr, từ chuyển đổi chữ hoa/thường, xóa/nén ký tự, đến chia/gộp dòng văn bản.
    • Các nhóm ký tự đặc biệt: Biết cách sử dụng các lớp ký tự như [:lower:], [:upper:], [:digit:] để viết lệnh ngắn gọn và hiệu quả hơn.
    • FAQ: Giải đáp chi tiết các thắc mắc khi bạn thao tác với lệnh tr trong Linux.

    Lệnh tr Linux là gì?

    Lệnh tr (translate) là một công cụ dòng lệnh mạnh mẽ trong Linux dùng để chuyển đổi, xóa hoặc nén các ký tự từ stdin (input) và ghi kết quả ra stdout (output). Đây là lệnh cực kỳ hữu ích khi bạn cần thao tác văn bản trực tiếp trong dòng lệnh mà không cần đến các công cụ chỉnh sửa văn bản phức tạp.

    Cấu trúc cú pháp lệnh tr Linux như sau:

    $ tr [tùy chọn] [SET1] [SET2]

    Trong đó:

    • SET1: Là một chuỗi ký tự (hoặc một bộ ký tự) mà tr sẽ tìm kiếm trong đầu vào.
    • SET2: Là một chuỗi ký tự (hoặc một bộ ký tự) tương ứng để thay thế.

    Khi không có tùy chọn nào được sử dụng, tr sẽ dịch mỗi ký tự ở vị trí i trong SET1 thành ký tự ở vị trí i trong SET2.

    Lệnh tr dùng để chuyển đổi, xóa hoặc nén các ký tự từ stdin (input) và ghi kết quả ra stdout (output).
    Lệnh tr dùng để chuyển đổi, xóa hoặc nén các ký tự từ stdin (input) và ghi kết quả ra stdout (output).

    Cơ chế hoạt động của tr trên Linux

    Cơ chế hoạt động của tr rất đơn giản và tuân thủ triết lý của Unix:

    1. Lệnh tr đọc một luồng byte từ đầu vào tiêu chuẩn (stdin).
    2. Sau đó lệnh thực hiện các phép biến đổi như dịch hoặc xóa trên luồng dữ liệu đó.
    3. Cuối cùng, lệnh ghi kết quả đã được xử lý ra đầu ra tiêu chuẩn (stdout).

    Các thao tác mà tr thực hiện rất đa dạng, bao gồm chuyển đổi chữ hoa/chữ thường, nén các ký tự lặp lại, xóa các ký tự không mong muốn, và thực hiện các hoạt động tìm kiếm, thay thế ở mức độ ký tự.

    Cơ chế hoạt động của tr trên Linux
    Cơ chế hoạt động của tr trên Linux

    Các tùy chọn quan trọng của lệnh tr trong Linux

    Lệnh tr cung cấp một số tùy chọn mạnh mẽ cho phép người dùng thực hiện các thao tác xóa, nén, và bổ sung.

    Tùy chọnChức năngMô tả
    -d, –deleteXóa ký tựTùy chọn này hướng dẫn tr xóa tất cả các ký tự được chỉ định trong SET1 khỏi đầu ra. Khi sử dụng -d, SET2 sẽ bị bỏ qua và không có bất kỳ thao tác dịch nào được thực hiện.
    -s, –squeeze-repeatsNén ký tự lặp lạiTùy chọn này thay thế các chuỗi ký tự lặp lại liên tiếp (mà ký tự đó có trong SET1) bằng một lần xuất hiện duy nhất.
    -c, -C, –complementBổ sung (đảo ngược) bộ ký tự:Thay vì áp dụng thao tác trên các ký tự trong SET1, tùy chọn này sẽ áp dụng lên tất cả các ký tự không có trong SET1.
    -t, –truncate-set1Cắt ngắn SET1Theo mặc định, nếu SET1 dài hơn SET2, tr sẽ lặp lại ký tự cuối cùng của SET2. Tùy chọn -t sẽ cắt ngắn SET1 để có cùng độ dài với SET2 trước khi thực hiện dịch.

    1. Chuyển đổi chữ thường sang chữ hoa

    Đây là một trong những ứng dụng phổ biến nhất của tr, bạn có thể dễ dàng chuyển đổi toàn bộ văn bản từ chữ thường sang chữ hoa và ngược lại.

    $ cat linux.txt | tr [:lower:] [:upper:]

    Trong trường hợp này, khi bạn chạy lệnh trên, kết quả sẽ chuyển toàn bộ chữ cái viết thường trong file linux.txt thành chữ hoa.

    Chuyển đổi chữ thường sang chữ hoa
    Chuyển đổi chữ thường sang chữ hoa

    2. Lưu kết quả đầu ra vào file

    Để lưu dữ liệu đầu ra vào file, bạn thực hiện lệnh sau:

    $ cat linux.txt | tr 'a-z' 'A-Z' > output.txt

    Thao tác này giúp bạn chuyển đổi dữ liệu đầu vào từ chữ thường thành hoa và lưu kết quả vào file mới output.txt, rất phù hợp khi bạn cần lưu trữ kết quả xử lý để dùng sau, như xuất báo cáo hoặc phân tích.

    Lưu dữ liệu đầu ra vào file
    Lưu dữ liệu đầu ra vào file

    3. Kết hợp chuyển hướng input và output

    Bạn có thể sử dụng < để chuyển hướng đầu vào từ file linux.txt, đồng thời dùng > để chuyển hướng đầu ra vào file output.txt. Giải pháp này giúp rút ngắn lệnh, loại bỏ nhu cầu dùng cat hoặc pipe |, nhờ đó mã lệnh sẽ trở nên đơn giản và dễ hiểu hơn.

    $ tr 'a-z' 'A-Z' < linux.txt > output.txt

    Kết quả hiển thị như sau:

    Kết hợp chuyển hướng input và output
    Kết hợp chuyển hướng input và output

    4. Xóa ký tự bằng tùy chọn -d

    Sử dụng tùy chọn -d giúp bạn làm sạch dữ liệu, ví dụ: xóa khoảng trắng dư trong tên miền, định dạng email, số điện thoại,… Ví dụ, để xóa khoảng trắng khỏi các tên miền trong file domains.txt, bạn thực thi lệnh sau:

    $ cat domains.txt | tr -d ' '

    Sau khi chạy lệnh, kết quả hiển thị sẽ xóa tất cả khoảng trắng trong file domains.txt. 

    kết quả hiển thị sẽ xóa tất cả khoảng trắng trong file domains.txt
    Kết quả hiển thị sẽ xóa tất cả khoảng trắng trong file domains.txt

    5. Nén ký tự lặp

    Sử dụng tùy chọn -s hữu ích khi bạn cần xử lý văn bản bị lỗi hoặc bị spam bởi ký tự trùng lặp, ví dụ như khi tên miền bị gõ nhầm như vietnix…..com. Như vậy, để loại bỏ dấu “.” thừa, bạn hãy thực thi lệnh sau:

    $ cat domains.txt | tr -s '.'

    Lệnh sau khi được thực thi sẽ loại bỏ các dấu “.” lặp lại liên tục và chỉ giữ lại 1 dấu duy nhất.

    Kết quả sẽ loại bỏ các dấu “.” lặp lại liên tục
    Kết quả sẽ loại bỏ các dấu “.” lặp lại liên tục

    6. Giữ lại hoặc loại bỏ ký tự cụ thể 

    Bạn có thể sử dụng tùy chọn -c khi muốn tách số hoặc thông tin định dạng cụ thể từ chuỗi văn bản. Trong trường hợp này, để giữ lại số UID, bạn có thể sử dụng tùy chọn -c như sau:

    $ echo "My UID is $UID" | tr -cd "[:digit:]\n"

    Sau khi thực thi, lệnh sẽ chỉ giữ lại số (UID) và dòng mới, đồng thời xóa toàn bộ chữ cái và ký tự khác:

    Sử dụng tùy chọn -c khi muốn tách số hoặc thông tin định dạng cụ thể từ chuỗi văn bản
    Sử dụng tùy chọn -c khi muốn tách số hoặc thông tin định dạng cụ thể từ chuỗi văn bản

    7. Chia câu thành từng dòng

    Thao tác này phù hợp khi bạn cần xử lý dữ liệu từng từ hoặc chuẩn bị dữ liệu cho xử lý script dòng lệnh:

    $ echo "My UID is $UID" | tr ' ' '\n'

    Sau khi thực thi lệnh trên, kết quả hiển thị sẽ thay thế khoảng trắng bằng dòng mới, tách từng từ trong câu thành mỗi dòng riêng biệt:

    Chia câu thành từng dòng
    Chia câu thành từng dòng

    8. Gộp dòng thành một câu

    Để gộp dòng thành một câu, bạn thực thi lệnh như sau:

    $ tr '\n' ' ' < uid.txt

    Tác dụng của lệnh này là gộp nhiều dòng thành một câu đơn, thay newline (\n) bằng khoảng trắng, phù hợp khi bạn cần nối các dòng lại để xử lý trong một lệnh duy nhất như nối danh sách, tên,…

    Kết quả hiển thị khi bạn gộp dòng thành một câu
    Kết quả hiển thị khi bạn gộp dòng thành một câu

    9. Thay thế ký tự đơn giản

    Lệnh dưới đây sử dụng công cụ tr để thay thế toàn bộ ký tự khoảng trắng trong chuỗi đầu vào bằng dấu hai chấm (:), phù hợp khi cần chuyển đổi hoặc chuẩn hóa dữ liệu nhằm phục vụ các mục đích định dạng đặc biệt, chẳng hạn như xuất ra chuỗi có cấu trúc CSV, JSON hoặc tương tác với hệ thống tự động hóa:

    $ echo "Tecmint.com =>Linux-HowTos,Guides,Tutorials" | tr ' ' ':'

    Kết quả hiển thị như sau:

    Thay thế khoảng trắng bằng dấu hai chấm
    Thay thế khoảng trắng bằng dấu hai chấm

    Một số nhóm ký tự đặc biệt

    NhómÝ nghĩa
    [:lower:]Chữ thường a-z
    [:upper:]Chữ hoa A-Z
    [:digit:]Số từ 0 đến 9
    [:alpha:]Tất cả chữ cái
    [:space:]Khoảng trắng, tab, newline

    Câu hỏi thường gặp

    Vì sao lệnh tr không hoạt động đúng với Unicode?

    Lệnh tr trên Linux tiêu chuẩn chỉ hỗ trợ mã ASCII, không xử lý được các ký tự Unicode nhiều byte như tiếng Việt có dấu hoặc emoji, do đó có hiện tượng bỏ sót hoặc chuyển đổi sai ký tự. Nếu cần thao tác Unicode, nên dùng sed, awk hoặc Perl – các công cụ hỗ trợ Unicode tốt hơn.

    Khi nào không nên dùng lệnh tr để tránh nguy cơ mất dữ liệu hoặc sai lệch thông tin?

    Bạn nên tránh dùng tr khi cần thao tác với tệp văn bản Unicode hoặc dữ liệu phức tạp nhiều cột, nhiều định dạng. Ngoài ra, lệnh tr xóa ký tự theo đúng lệnh mà không kiểm tra ngữ cảnh, dễ gây mất ký tự quan trọng nếu không chú ý.

    Có thể kết hợp tr với script bash để tạo bộ lọc tự động cho file log máy chủ không?

    Có, bạn có thể dùng tr trong shell script để lọc log và chuẩn hóa đầu vào tự động:
    !/bin/bash
    cat /var/log/syslog | tr -cd ‘[:alnum:] [:space:][:punct:]\n’ > cleaned_log.txt
    Script này giữ lại ký tự chữ cái, số, khoảng trắng, dấu câu để lọc log sạch trước khi xử lý tiếp.

    Lệnh tr là một công cụ dòng lệnh mạnh mẽ, linh hoạt cho phép thao tác và xử lý văn bản trực tiếp trên môi trường Linux mà không cần sử dụng các phần mềm chỉnh sửa phức tạp. Nhờ khả năng chuyển đổi, xóa, nén hoặc thay thế ký tự với cú pháp đơn giản, tr giúp tối ưu quá trình chuẩn hóa, lọc và biến đổi dữ liệu đầu vào, tiết kiệm thời gian cho quản trị viên cũng như lập trình viên khi xử lý dữ liệu từ nhiều nguồn khác nhau. Mời bạn tham khảo thêm các lệnh Linux phổ biến và hữu ích khác trong các bài viết dưới đây của mình:

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Cách sử dụng fping để kiểm tra trạng thái của nhiều host cùng lúc
    Cách sử dụng fping để kiểm tra trạng thái của nhiều host cùng lúc

    fping là phiên bản mở rộng của lệnh ping, được dùng để kiểm tra trạng thái của nhiều địa chỉ IP hoặc domain cùng lúc nhanh chóng. Trong bài viết này, mình sẽ cung cấp một hướng dẫn toàn diện về fping, từ việc định nghĩa, cài đặt, cho đến cách khai thác các tính…

    05/02/2026

    Hướng dẫn sử dụng lệnh uptime Linux để kiểm tra thời gian hoạt động của hệ thống
    Hướng dẫn sử dụng lệnh uptime Linux để kiểm tra thời gian hoạt động của hệ thống

    Lệnh uptime Linux là một công cụ dòng lệnh giúp kiểm tra nhanh chóng thời gian hoạt động của máy chủ kể từ lần khởi động gần nhất, thường được sử dụng trong các công việc giám sát, quản lý và đánh giá hiệu suất hoạt động của máy chủ Linux. Trong bài viết này,…

    05/02/2026

    Cách sử dụng lệnh stat Linux chi tiết và đơn giản
    Cách sử dụng lệnh stat Linux chi tiết và đơn giản

    Lệnh stat trong Linux là một tiện ích dòng lệnh dùng để hiển thị thông tin chi tiết về một file hoặc thư mục, cung cấp các thuộc tính như kích thước file, quyền truy cập, quyền sở hữu, các dấu thời gian liên quan đến lần truy cập, chỉnh sửa và thay đổi metadata…

    05/02/2026

    Hướng dẫn sử dụng lệnh rmdir để xóa thư mục trong Linux chi tiết
    Hướng dẫn sử dụng lệnh rmdir để xóa thư mục trong Linux chi tiết

    Lệnh rmdir là một công cụ dòng lệnh cơ bản trong hệ điều hành Linux, được thiết kế chuyên biệt để giúp bạn gỡ bỏ các thư mục trống khỏi hệ thống một cách an toàn. rmdir sẽ kiểm tra và chỉ thực hiện lệnh xóa khi thư mục thực sự không chứa tệp tin…

    05/02/2026

    linux

    lenh

    text