Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Linux tr Lệnh với các ví dụ

Trong hệ thống Linux và Unix, tr là một tiện ích dòng lệnh có chức năng dịch, xóa và “ bóp ”Các ký tự lặp lại - trên thực tế, tr là viết tắt của“ dịch . ” Hướng dẫn này giải thích cách sử dụng lệnh tr trong Linux, kèm theo các ví dụ. Nó có thể được sử dụng cho các hoạt động như loại bỏ các ký tự lặp lại, chuyển đổi chữ thường thành chữ hoa và thay thế và loại bỏ các ký tự cơ bản. Nó thường được sử dụng cùng với các lệnh khác thông qua đường ống.

Linux là nhân cơ bản / hệ điều hành cốt lõi đằng sau phần lớn công nghệ mà chúng ta sử dụng hàng ngày, bao gồm cả Android - nền tảng mà nhiều người trong chúng ta sẽ có trên điện thoại di động của mình. Nó là mã nguồn mở và có thể cấu hình dễ dàng.

Cách sử dụng 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 OPTION... SET1 [SET2]

Lệnh tr chấp nhận hai bộ ký tự (thường có cùng độ dài). Sau đó, nó thay thế các ký tự từ tập hợp đầu tiên bằng các ký tự tương ứng từ tập hợp thứ hai. Trong trường hợp này, SET là một chuỗi ký tự và bao gồm các ký tự thoát ra sau dấu gạch chéo ngược đặc biệt.

Ví dụ

Sử dụng một loạt các ký tự

Bạn cũng có thể sử dụng các dải ô thay vì các lớp ký tự nếu bạn muốn:

echo 'hello' | tr 'a-z' 'A-Z'

Để chuyển đổi theo cách khác, chỉ cần chuyển đổi vị trí của các nhóm.

Chuyển đổi trường hợp

Chuyển đổi chữ hoa thành chữ thường hoặc ngược lại là một trong những trường hợp sử dụng phổ biến nhất của lệnh tr.

[:thấp hơn:] khớp với tất cả các ký tự viết thường và [:upper:] khớp với tất cả các ký tự viết hoa.

echo 'Hello' | tr '[:lower:]' '[:upper:]'
HELLO

Xóa các dòng trống

Để xóa các dòng trống, bạn cần “ bóp ”Các ký tự dòng mới lặp lại:

tr -s '\n' < input.txt > output.txt

Ở trên, chúng tôi đang sử dụng biểu tượng chuyển hướng, sau đó ghi đầu ra của lệnh vào output.txt .

Xóa tất cả các ký tự không phải số

Lệnh sau sẽ xóa tất cả các ký tự không phải số:

echo "The account number is 10879358" | tr -cd [:digit:]

[:chữ số:] là viết tắt của tất cả các ký tự chữ số. Bằng cách sử dụng -c tùy chọn, lệnh loại bỏ các ký tự không phải là số. Kết quả tiếp theo sẽ giống như sau:

10879358

In thư mục $ PATH trên một dòng mới

$ PATH biến môi trường là danh sách các thư mục (được phân cách bằng dấu hai chấm) cho shell biết thư mục nào để tìm kiếm các tệp thực thi khi bạn nhập lệnh. Để in từng thư mục vào một dòng mới riêng biệt, chúng ta cần phải khớp với dấu hai chấm (: ) và sau đó thay thế nó bằng lệnh dòng mới:

echo $PATH | tr ':' '\n'

/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/snap/bin

Đặt mỗi từ trên một dòng mới

Để làm điều này, chúng tôi cần phải đối sánh tất cả các ký tự ( không phải là chữ và số ) và sau đó thay thế chúng bằng một dòng mới:

echo 'Linux is the best operating system in the world' | tr -cs '[:alnum:]'

Đầu ra là:

Linux
is
the
best
operating
system
in
the
world

Thay thế các ký tự

Nếu chúng tôi muốn thay thế các ký tự từ đầu vào chuẩn ('mã hóa') bằng các ký tự tương ứng của bộ thứ hai.

echo 'coding' | tr 'co' 'hi'

Mỗi lần xuất hiện của “c” được thay thế bằng “h” và “o” bằng “i” với kết quả:

hiding

Các bộ ký tự cũng có thể được xác định bằng cách sử dụng các dải ký tự. Ví dụ:thay vì viết:

echo 'coding' | tr 'abcd' 'wxyz'

bạn có thể sử dụng:

echo 'coding' | tr 'a-d' 'w-z'
yozing

Khi -c tùy chọn được sử dụng, tr thay thế tất cả các ký tự KHÔNG trong SET1 .

Trong ví dụ sau, tất cả các ký tự ngoại trừ “ li ”Sẽ được thay thế bằng ký tự cuối cùng từ bộ thứ hai:

$ echo 'coding' | tr -c 'cod' 'xy'
liyyyiyyy

Để lặp lại một chuỗi mà không có dòng mới, hãy sử dụng tùy chọn -n.

-d tùy chọn yêu cầu tr xóa các ký tự được chỉ định trong SET1 . Khi bạn muốn thực hiện việc này mà không cần bóp, bạn chỉ nên chỉ định một bộ.

Lệnh dưới đây sẽ xóa l, I và z ký tự:

echo 'Linuxize' | tr -d 'liz'