Tổng Quan Về Ba Công Cụ Linux: grep, awk, sed
Các Khái Niệm Cơ Bản
Kết Nối Ảnh Xạ (Pipes) |
Sử dụng dấu "|" để kết nối hai lệnh, đầu ra của lệnh bên trái trở thành đầu vào của lệnh bên phải, có thể kết nối liên tục.
cat demo.sh | grep ip | sort | uniq
Chức Năng Chuyển Đổi (> và >>)
Đưa ra kết quả vào một tệp, nếu tệp không tồn tại thì tự động tạo mới.
Các lệnh như echo, awk, grep v.v... đều có thể thực hiện chức năng này.
> # Ghi đè, xóa nội dung cũ của tệp
>> # Thêm vào cuối tệp
Ba Công Cụ: grep, awk, sed
Tất cả đều hỗ trợ biểu thức chính quy cơ bản, tham khảo phần cuối về biểu thức chính quy.
1. grep
1.1 Cú Pháp
# Sử dụng cơ bản, grep [tùy chọn] giá trị_mục_tiêu tệp(tệp có thể nhiều hơn một tệp)
grep [options] pattern [files]
# Kết hợp với ống dẫn
cat demo.txt | grep [options] pattern
1.2 Giải Thích Các Tham Số
| Tham số tùy chọn |
Mô tả |
Ví dụ sử dụng |
| -i |
Bỏ qua chữ hoa/thường |
grep -i daTa ./osp.txt |
| -v |
Trả về những dòng không khớp |
grep -v usrId ./osp.txt |
| -n |
Hiển thị số dòng |
grep -n id ./osp.txt |
| -c |
Đếm số dòng khớp |
grep -c id ./osp.txt |
| -w |
Khớp toàn bộ từ |
grep -w water ./osp.txt |
| -r |
Xử lý đệ quy các thư mục con |
grep -r www ./ |
| -l |
Khi xử lý nhiều tệp, chỉ in tên tệp có chứa dòng khớp |
grep -l test.txt test2.txt |
| -f |
Đọc các quy tắc lọc từ tệp |
cat test.log | grep -f pattern.config |
| -e |
Tham số là quy tắc khớp, có thể sử dụng nhiều lần. |
grep -ie ‘www’ -ne ‘monkey.com’ ./web.js |
| -E |
Sử dụng biểu thức chính quy mở rộng |
grep -E |
2. awk
2.1 Cú Pháp
1. Cú pháp đơn giản: awk options '[pattern] {action}' file
options là tùy chọn, ví dụ -F, -e
pattern không bắt buộc, quy tắc khớp, xác định các dòng được xử lý
{action} hành động thực hiện
# Ví dụ nội dung tệp
[monkey@osp~01] /home/monkey> cat web
add1=www.monkey.com
add2=http://127.0.0.1:80
add3=https://monkeys.cn
id=1
name=Nguyễn Văn A
# In giá trị bên phải dấu = của dòng chứa add
[monkey@osp~01] /home/monkey> awk -F '=' '/add/ {print $2}' web
www.monkey.com
http://127.0.0.1:80
https://monkeys.cn
2. Cú pháp chuẩn: awk options 'BEGIN {action} [pattern] {action} END {action}' file
Chỉ khác thêm các khối BEGIN và END.
2.2 Các Biến Nội Bộ
| Biến nội bộ |
Mô tả |
| $0 |
Nội dung toàn bộ dòng |
| $1, $2…, $n |
Nội dung từng phần sau khi phân chia dòng |
| NF |
Số lượng phần sau khi phân chia dòng |
| NR |
Số dòng hiện tại đang xử lý, liên tục khi xử lý nhiều tệp |
| FNR |
Số dòng riêng biệt cho mỗi tệp khi xử lý nhiều tệp |
| FS |
Ký tự phân cách trường, mặc định là khoảng trắng hoặc tab |
| RS |
Ký tự phân cách dòng, mặc định là enter |
| OFS |
Ký tự phân cách trường khi xuất |
| ORS |
Ký tự phân cách dòng khi xuất |
| FILENAME |
Tên tệp hiện tại (không có trong khối BEGIN) |
| ARGC |
Số lượng đối số dòng lệnh |
| ARGV |
Mảng đối số dòng lệnh |
2.3 Giải Thích Các Tham Số
# options - tham số
-F hoặc --field-separator= # chọn ký tự phân cách, mặc định là khoảng trắng
-v = # thiết lập giá trị biến bên trong awk
-f # tải tệp awk chỉ định
-v hoặc --version # hiển thị phiên bản awk
-h hoặc --help # giúp đỡ
# pattern - toàn bộ văn bản chọn dòng, mặc định tất cả, tương tự grep
Toán tử hoặc biểu thức chính quy
$1 == "DNS3"
# action - chọn nội dung cụ thể trong dòng, mặc định là toàn bộ dòng
$0 toàn bộ dòng, $1 phần thứ nhất, v.v.
{print $1} # kết quả đầu ra: Táo
printf("%s có %d cái", $1, NR)
# %s thay thế biến chuỗi, %d thay thế biến số thập phân, kết quả: Táo có 10 cái
3. sed
3.1 Cú Pháp
# 1. biểu thức (script)
sed [tùy chọn] 'biểu thức(script)' tệp...
# 2. đọc từ đầu ra chuẩn
cat test.sh | grep sed [tùy chọn] script
3.2 Các Tham Số
-n, --quiet, --silent # chế độ im lặng
3.3 Các Lệnh Cơ Bản
- **s**: Thay thế nội dung
sed 's/nội dung_cũ/nội_dung_mới/đặc_số' tệp
- **i**: Chèn dòng trước dòng khớp
- **a**: Thêm dòng sau dòng khớp
- **c**: Thay thế toàn bộ dòng khớp
- **d**: Xóa dòng khớp
- **p**: In dòng khớp
- **r**: Đọc từ tệp và chèn vào vị trí khớp
- **w**: Ghi vào tệp
3.4 Mô Hình Không Gian Mô Phỏng và Không Gian Lưu Trữ
- **n**: In dòng hiện tại, đọc dòng tiếp theo vào không gian mô phỏng
- **N**: Đọc dòng tiếp theo và nối vào dòng hiện tại trong không gian mô phỏng
- **h**: Sao chép không gian mô phỏng vào không gian lưu trữ (ghi đè)
- **H**: Nối không gian mô phỏng vào không gian lưu trữ
- **g**: Thay thế nội dung không gian mô phỏng bằng nội dung không gian lưu trữ
- **G**: Nối nội dung không gian lưu trữ vào cuối không gian mô phỏng
- **x**: Hoán đổi nội dung giữa không gian mô phỏng và không gian lưu trữ
4. Biểu Thức Chính Quy
Cung cấp các mẫu tìm kiếm phức tạp trong văn bản.