Tổng Quan Về Ba Công Cụ Linux: grep, awk, sed

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.

Thẻ: grep awk sed linux regex

Đăng vào ngày 19 tháng 5 lúc 20:06