10 ví dụ về lệnh tr trên Centos / Ubuntu / Debian / Fedora

tr (viết tắt của từ "translate") là một tiện ích dòng lệnh hữu ích cho việc dịch và/hoặc xóa các ký tự từ đầu vào stdin và ghi vào stdout. Đây là một chương trình hữu ích để thao tác văn bản trên dòng lệnh. Bài viết này sẽ giải thích một số ví dụ sử dụng lệnh tr hữu ích cho những người mới bắt đầu sử dụng Linux.

Cú pháp cơ bản của lệnh tr

Cú pháp để chạy lệnh tr như sau, trong đó các ký tự trong SET1 sẽ được dịch sang các ký tự trong SET2.

$ tr flags [SET1] [SET2]

Các ví dụ mà bạn nên biết về lệnh tr

1. Một trường hợp sử dụng đơn giản của lệnh tr là thay đổi tất cả các chữ thường trong văn bản thành chữ hoa và ngược lại, như được thể hiện dưới đây.

$ cat linux.txt

linux is my life
linux has changed my life
linux is best and everthing to me..:)
$ cat linux.txt | tr [:lower:] [:upper:]

LINUX IS MY LIFE
LINUX HAS CHANGED MY LIFE
LINUX IS BEST AND EVERTHING TO ME..:)

2. Một cách khác, bạn có thể sử dụng lệnh sau để thay đổi tất cả các chữ thường thành chữ hoa trong một tệp như được hiển thị dưới đây.

$ cat linux.txt | tr [a-z] [A-Z]

LINUX IS MY LIFE
LINUX HAS CHANGED MY LIFE
LINUX IS BEST AND EVERTHING TO ME..:)

3. Để lưu kết quả được ghi vào stdout vào một tệp để xử lý sau này, sử dụng tính năng chuyển hướng đầu ra của shell (>) như được hiển thị dưới đây.

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

LINUX IS MY LIFE
LINUX HAS CHANGED MY LIFE
LINUX IS BEST AND EVERTHING TO ME..:)

4. Đối với việc chuyển hướng đầu vào, bạn có thể gửi đầu vào cho lệnh tr bằng cách sử dụng chuyển hướng đầu vào và chuyển hướng đầu ra vào một tệp sử dụng cùng một lệnh, như được hiển thị dưới đây.

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

5. Một tính năng hữu ích khác là bạn có thể sử dụng cờ -d để xóa các ký tự, ví dụ: để loại bỏ khoảng trống trong tên miền bằng lệnh sau đây.

$ cat domains.txt

www. phothongtin. com
www. fossmint. com
www. linuxsay. com
$ cat domains.txt | tr -d '' 

www.phothongtin.com
www.fossmint.com
www.linuxsay.com

6. Nếu có các ký tự lặp lại trong một chuỗi (ví dụ: khoảng trắng kép) trong văn bản bạn đang xử lý, bạn có thể sử dụng tùy chọn -s để nén các ký tự và chỉ giữ lại một lần xuất hiện của chúng.

$ cat domains.txt

www.phothongtin.....com
www.fossmint.com
www.linuxsay.com
$ cat domains.txt | tr -s '' 

www.phothongtin.com
www.fossmint.com
www.linuxsay.com

7. Tùy chọn -c cho phép lệnh tr sử dụng bổ sung của SET được chỉ định. Trong ví dụ này, chúng ta muốn xóa tất cả các chữ cái và chỉ giữ lại UID.

$ echo "My UID is $UID" | tr -cd "[:digit:]\n"
OR
$ echo "My UID is $UID" | tr -d "a-zA-Z"

8. Dưới đây là một ví dụ về việc chia một dòng từ (câu) thành nhiều dòng, trong đó mỗi từ xuất hiện riêng lẻ.

$ echo "My UID is $UID"

My UID is 1000

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

My 
UID 
is 
1000

Liên quan đến ví dụ trước đó, bạn cũng có thể dịch nhiều dòng từ thành một câu duy nhất như được hiển thị.

$ cat uid.txt

My 
UID 
is 
1000

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

My UID is 1000

10. Cũng có thể dịch chỉ một ký tự duy nhất, ví dụ như dịch một khoảng trắng thành ký tự " : ", như sau.

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

phothongtin.com:=>Linux-HowTos,Guides,Tutorials

Có một số ký tự chuỗi bạn có thể sử dụng với lệnh tr, để biết thêm thông tin, xem trang trợ giúp của tr (man page).

$ man tr

Lệnh tr là một lệnh hữu ích để thao tác văn bản trên dòng lệnh. Làm theo những hướng dẫn trên bạn có thể nắm được ở mức cơ bản và sử dụng “tr” thành thạo hơn.