Bài viết này giới thiệu các bạn về cách dùng lệnh tr, tee, wc, cut trên hệ điều hành Linux.
1. Lệnh tr
Lệnh tr
là một tiện ích được sử dụng trên hệ điều hành Linux giúp chúng ta dịch, xóa các ký tự. Cú pháp chung như sau:
tr [tuỳ chọn] [set1] [set2]
Trong đó:
- set1: Liệt kê các ký tự trong văn bản phải được thay thế hoặc loại bỏ.
- set2: Liệt kê các ký tự sẽ được thay thế cho các ký tự liệt kê trong set1.
Để xem các tùy chọn của lệnh tr
chúng ta thực hiện lệnh sau: man tr
Để hiểu về các chức năng của lệnh tr
chúng ta thực hiện các ví dụ sau.
Ví dụ 1: Chuyển chữ thường thành chữ hoa sử dụng lệnh tr
.
[root@test1 ~]# cat file.txt
Roses are red,
Violets are blue,
Sugar is sweet,
And so are you.
[root@test1 ~]# cat file.txt | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
ROSES ARE RED,
VIOLETS ARE BLUE,
SUGAR IS SWEET,
AND SO ARE YOU.
Ví dụ 2: Chuyển khoảng trắng(space) thành tab.
[root@test1 ~]# echo "This is for test " | tr [:space:] '\t'
This is for test
Ví dụ 3: Chuyển từ tab thành khoảng trắng.
[root@test1 ~]# echo "This is for test" | tr -s [:space:]
This is for test
Ví dụ 4: Xoá kí tự cần xoá,kí tự đã được chỉ dịnh sử dụng tùy chọn -d
.
[root@test1 ~]# echo "This is for test" | tr -d 't'
This is for es
Ví dụ 5: Lọc chữ số cần tìm trong chuỗi dùng tuỳ chọn -c
.
[root@test1 ~]# echo "my username is 432234" | tr -cd [:digit:]
432234
Ví dụ 6: Nối tất cả các dòng trong một tệp thành một dòng.
[root@test1 ~]# cat file.txt
Roses are red,
Violets are blue,
Sugar is sweet,
And so are you.
[root@test1 ~]# tr -cd [:print:] < file.txt
Roses are red,Violets are blue,Sugar is sweet,And so are you.
[root@test1 ~]# cat file.txt
Roses are red,
Violets are blue,
Sugar is sweet,
And so are you.
[root@test1 ~]# tr -s '\n' ' ' < file.txt
Roses are red, Violets are blue, Sugar is sweet, And so are you.
2. Lệnh tee
Lệnh tee
có chức năng là đọc nội dung từ STDIN (standard input) và xuất ra STDOUT (standard output) và ghi vào file. Cú pháp cơ bản là:
tee [tùy chọn] file
Để xem các tùy chọn của lệnh tee
chúng ta thực hiện lệanh sau: man tee
Để hiểu về các chức năng của lệnh tee
chúng ta thực hiện các ví dụ sau.
Ví dụ 1: Sao chép đầu vào từng file và cả đầu ra
[root@test1 ~]# cat file.txt
[root@test1 ~]# echo "example" | tee file.txt
example
[root@test1 ~]# cat file.txt
example
Ví dụ 2: Nối vào các file đã cho, không ghi đè
[root@test1 ~]# cat file.txt
example
[root@test1 ~]# echo "example-1" | tee -a file.txt
example-1
[root@test1 ~]# cat file.txt
example
example-1
In đầu vào đến thiết bị đầu cuối, và cũng đưa nó vào một chương trình khác để xử lý thêm:
[root@test1 ~]# cat file.txt
example
example-1
[root@test1 ~]# echo "example-2" | tee file.txt | xargs printf "[%s]"
[example][root@test1 ~]# cat file.txt
example-2
3. Lệnh wc
Lệnh wc
dùng đến từ, byte hoặc dòng. Cú pháp của lệnh wc
wc [tùy chọn] file
Các tùy chọn phổ biến của lệnh wc
thông qua bảng sau:
Tùy chọn | Chức năng |
---|---|
-l | Hiển thị số lượng dòng |
-c | Hiển thị số lượng byte |
-w | Hiển thị số lượng từ |
Các chức năng của lệnh wc
:
Đếm các dòng trong tệp
wc -l file
Đếm số từ trong tệp
wc -w file
Đếm các ký tự (byte) trong tệp
wc -c file
4. Lệnh cut
Lệnh cut
được sử dụng thao tác với tệp dựa trên cột và được thiết kế để trích xuất các cột cụ thể. Dấu phân cách cột mặc định là ký tự tab
Chúng ta thực hiện các ví dụ về lệnh cut
Ví dụ 1: Cắt mười sáu ký tự đầu tiên của mỗi dòng STDIN:
[root@test1 ~]# echo "This is a filetest" | cut -c 1-16
This is a filete
Ví dụ 2: Cắt mười sáu ký tự đầu tiên của mỗi dòng của các tệp đã cho
[root@test1 ~]# cat file.txt
Roses are red, Violets are blue,
Sugar is sweet, And so are you.
[root@test1 ~]# cut -c 1-16 file.txt
Roses are red, V
Sugar is sweet,
Ví dụ 3: Cắt bỏ từ ký tự thứ 3 đến cuối mỗi dòng
[root@test1 ~]# cat file.txt
Roses are red, Violets are blue,
Sugar is sweet, And so are you.
[root@test1 ~]# cut -c 3- file.txt
ses are red, Violets are blue,
gar is sweet, And so are you.
Ví dụ 4: Cắt trường thứ 1 của mỗi dòng trong file
[root@test1 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@test1 ~]# cut -d':' -f1 /etc/passwd
root
bin
daemon
adm
lp