9 Ví dụ thực tế về Lệnh cắt trong Linux
Hệ điều hành dựa trên Linux cung cấp nhiều tiện ích xử lý văn bản dòng lệnh mà bạn có thể sử dụng trong thói quen hàng ngày của mình. Lệnh cắt là một trong những tiện ích thao tác văn bản như vậy sử dụng dấu phân cách, byte, trường và cột để tìm nạp một chuỗi bắt buộc từ cơ sở dữ liệu tệp phẳng hoặc một dòng.
Vì cơ sở dữ liệu tệp phẳng không có mối quan hệ cấu trúc và các bản ghi được phân tách với sự trợ giúp của dấu phân cách, nên cut là một công cụ lý tưởng để trích xuất các ký tự hoặc byte thông tin. Bài viết này thảo luận chi tiết về lệnh cắt và trình bày một số ví dụ thực tế với các tùy chọn bộ lọc khác nhau để giúp bạn bắt đầu với công cụ.
Mục Lục
Tổng quan về Lệnh cắt
cut sử dụng cú pháp cơ bản sau:
cut <option> <file>
Bạn cũng có thể đặt nó bằng các lệnh khác như sau:
echo “string_of_characters” | cut <options>
Xin lưu ý rằng sự vắng mặt của bất kỳ tùy chọn nào sẽ tạo ra lỗi. Dưới đây là một số cờ bạn có thể sử dụng với cut để gọi các chức năng khác nhau của nó:
| Lựa chọn | Sự miêu tả |
|---|---|
| -b | Cắt theo vị trí byte |
| -C | Cắt theo vị trí ký tự |
| -d | Trích xuất chuỗi bằng cách sử dụng dấu phân cách được chỉ định với tùy chọn trường (-f) |
| -f | Trích xuất theo một trường cụ thể |
| -S | Trích xuất chỉ cho dấu phân cách |
| –bổ sung | In đầu ra ngoại trừ trường mà bạn đã chỉ định |
| –output-delimiter | Thay thế dấu phân cách hiện có bằng dấu bạn đã chỉ định |
Dưới đây là một số ví dụ về lệnh cắt sẽ giúp bạn hiểu rõ hơn về công cụ và các chức năng của nó.
Sử dụng -b tùy chọn để tìm nạp các chuỗi ký tự theo số byte của chúng, như sau:
echo "Hello World" | cut -b 1,2,3,5,8,9
Đầu ra:
Heloor
Bạn cũng có thể chỉ định một đường dẫn tệp thay vì một chuỗi:
cut -b 1,2,3,4,5 filename.txt
Hoặc bạn có thể trích xuất các ký tự theo vị trí của chúng trong văn bản. Sử dụng -C theo sau là trình tự / thứ tự các ký tự bạn cần tìm nạp như sau:
echo "Hello World" | cut -c 1,2,3,5,6,8,10,11
Đầu ra:
Helo old
Tương tự, để tìm nạp các trường hoặc cột từ cơ sở dữ liệu tệp phẳng, hãy sử dụng lệnh cut với -f tùy chọn cờ:
cut -f 3 database.txt
2. Cắt phạm vi byte hoặc ký tự
Bạn cũng có thể sử dụng -b gắn cờ bằng lệnh cut để trích xuất và in nhiều dải byte như sau:
cut -b 1-7,16-23 database.txt
Bạn có thể xác định phạm vi để tìm nạp các ký tự bằng cách sử dụng -C cờ như sau:
cut -c 1-7,16-23 database.txt
Sử dụng -cn- tùy chọn trích xuất văn bản từ ký tự thứ n trở đi đến cuối dòng, trong đó n là chỉ số của một ký tự trong chuỗi.
Ví dụ: để trích xuất chuỗi bắt đầu từ ký tự thứ sáu đến cuối dòng:
cut -c6- database.txt
Hoặc sử dụng lệnh sau để tìm nạp từ đầu đến cuối m các ký tự từ tệp:
cut -c-8 database.txt
4. Cắt nhiều trường từ một tệp
Bạn cũng có thể in nhiều trường từ một tệp bằng cách sử dụng -f lá cờ.
cut -f 1,2 database.txt
Đầu ra:
NAME AGE
Jhon 20
Lisa 24
Jack 18
Bruce 23
Nancy 19
Bạn có thể dùng -d cờ để chỉ định dấu phân cách với -f lựa chọn. Dấu phân tách chỉ định ký tự được sử dụng để phân tách các trường trong tệp văn bản.
Ví dụ: để trích xuất cột đầu tiên của tệp / etc / passwd, hãy sử dụng dấu hai chấm (:) làm dấu phân cách:
cut -d ‘:’ -f 1 /etc/passwd
Tương tự, giá trị dấu phân cách trong dòng văn bản nhất định là một khoảng trắng:
echo "The 1% of the 1%" | cut -d ' ' -f 2,3
Đầu ra:
1% of
6. Thay đổi Dấu phân cách đầu ra cho màn hình
Các –output-delimiter cờ thêm tính linh hoạt cho đầu ra lệnh cắt. Ví dụ: bạn có thể sử dụng cờ để hiển thị đầu ra trong một dòng riêng biệt bằng cách sử dụng $ ‘ n’ (dòng mới), như sau:
grep alice /etc/passwd | cut -d ':' -f 1,5,7 --output-delimiter=$'n'
Đầu ra:
alice
Alice
/bin/sh
Hơn nữa, bạn cũng có thể thay thế dấu phân cách của tệp đầu vào bằng dấu phân cách bạn chọn trong đầu ra bằng cách sử dụng –output-delimiter lá cờ:
grep root /etc/passwd | cut -d ':' -f 1,6,7 --output-delimiter=@
Đầu ra:
root@/root@/bin/bash
nm-openvpn@/var/lib/openvpn/chroot@/usr/sbin/nologin
7. Cắt các trường chỉ khi một dòng chứa dấu phân cách
Sử dụng -S cờ để trích xuất các trường chỉ khi các dòng chứa dấu phân cách. Ví dụ: lệnh sau sẽ không tìm nạp trường -f 1 trừ khi nó có dấu phân cách:
echo "HelloWorld" | cut -d " " -f 1 -s
Ngược lại, lệnh được đề cập bên dưới sẽ tạo ra một đầu ra là chuỗi chứa dấu phân cách được chỉ định:
echo "Hello World" | cut -d " " -f 1 -s
Đầu ra:
Hello
Tương tự, bạn cũng có thể sử dụng bất kỳ ký tự nào khác làm dấu phân cách:
echo "Hello:World" | cut -d ":" -f 2 -s
Đầu ra:
World
8. Bổ sung đầu ra lệnh
Tiện ích cắt cũng cho phép bạn in tất cả các trường ngoại trừ trường được chỉ định. Sử dụng –bổ sung tùy chọn như sau để tìm nạp tất cả các chi tiết của tài khoản người dùng gốc ngoại trừ cột thứ năm:
grep "root" /etc/passwd | cut -d ':' --complement -s -f 5
Đầu ra:
root:x:0:0:/root:/bin/bash
Tương tự, trong ví dụ dưới đây, -f 1 tham số phải hiển thị xin chào văn bản tuy nhiên, do –bổ sung tùy chọn, nó chỉ in phần còn lại của nó.
echo "Hello to the whole World" | cut -d " " -f 1 --complement
Đầu ra:
to the whole World
9. Cắt ống với Tiện ích Sed
Phần tốt nhất là bạn có thể kết hợp lệnh cắt với đầu ra tiêu chuẩn của các lệnh Linux / Unix khác.
sed là một trong những công cụ chỉnh sửa văn bản mà bạn có thể sử dụng để xóa, chèn và thay thế văn bản của mình. Bạn có thể dễ dàng chuyển đầu ra của nó tới lệnh cắt.
Trong ví dụ dưới đây, đầu ra lệnh grep được chuyển đến tiện ích sed thay thế dấu hai chấm (:) bằng dấu gạch ngang (-) và sau đó, cut hiển thị các trường 1, 6 và 7 như sau:
grep alice /etc/passwd | sed 's/:/-/g' | cut -d ' ' -f 1,5,7
Đầu ra:
alice-x-1005-1008-Alice-/home/new/alice-/bin/sh
Làm việc với văn bản trên Linux bằng cách sử dụng cut
Lệnh cắt là một tiện ích dòng lệnh linh hoạt và hiệu quả mà bạn có thể sử dụng trong các trường hợp sử dụng khác nhau của thao tác văn bản. Nó sử dụng các hoạt động để lọc ra văn bản từ các tệp hoặc dữ liệu đầu vào tiêu chuẩn. Tiện ích này cũng có một ưu điểm là người dùng có thể giới hạn văn bản mà họ muốn hiển thị và thêm các dấu phân cách theo ý họ.
Tuy nhiên, lệnh này cũng có một số hạn chế. Bạn không thể sử dụng biểu thức chính quy để chỉ định dấu phân cách hoặc sử dụng nhiều tùy chọn lệnh cắt đồng thời. Bài viết này bao gồm các ví dụ thực tế từ cơ bản đến nâng cao về tiện ích này để giúp người mới bắt đầu hiểu rõ về các lệnh thao tác văn bản trên Linux.
Đọc tiếp
Giới thiệu về tác giả