Android

Linux cắt lệnh với các ví dụ

Download and Use Kali Linux 2020 3

Download and Use Kali Linux 2020 3

Mục lục:

Anonim

Có nhiều tiện ích có sẵn trong các hệ thống Linux và Unix cho phép bạn xử lý và lọc các tệp văn bản. Cut là một tiện ích dòng lệnh cho phép bạn cắt các phần của dòng từ các tệp được chỉ định hoặc dữ liệu đường ống và in kết quả ra đầu ra tiêu chuẩn. Nó có thể được sử dụng để cắt các phần của một dòng bằng dấu phân cách, vị trí byte và ký tự.

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách sử dụng lệnh cắt Linux thông qua các ví dụ thực tế và giải thích chi tiết về các tùy chọn cắt phổ biến nhất.

Cách sử dụng lệnh Cut

Cú pháp của lệnh cắt như sau:

cut OPTION……

Khi sử dụng lệnh cắt, bạn phải sử dụng một và chỉ một trong các tùy chọn sau:

  • -f ( --fields=LIST ) - Chọn bằng cách chỉ định một trường, một tập hợp các trường hoặc một phạm vi các trường. Đây là tùy chọn được sử dụng phổ biến nhất. -b ( --bytes=LIST ) - Chọn bằng cách chỉ định một byte, một tập hợp byte hoặc một phạm vi byte. -c ( --characters=LIST ) - Chọn bằng cách chỉ định một ký tự, một bộ ký tự hoặc một phạm vi ký tự.

Các tùy chọn khác là:

  • -d ( --delimiter ) - Chỉ định một dấu phân cách sẽ được sử dụng thay cho dấu phân cách mặc định của TAB. - bổ sung - bổ sung cho việc lựa chọn. Khi sử dụng tùy chọn này sẽ hiển thị tất cả các byte, ký tự hoặc trường trừ trường được chọn. -s ( --only-delimited ) - Theo mặc định, phần cắt sẽ in bất kỳ dòng nào không chứa ký tự phân cách. Khi sử dụng tùy chọn này, cắt sẽ không in các dòng không chứa dấu phân cách. --output-delimiter - Mặc định là sử dụng dấu phân cách đầu vào làm dấu phân cách đầu ra. Tùy chọn này cho phép bạn chỉ định một chuỗi phân cách đầu ra khác nhau.

Lệnh cắt có thể chấp nhận 0 hoặc nhiều tên FILE đầu vào. Nếu không có TẬP_TIN được chỉ định hoặc khi TẬP_TIN - , cắt sẽ đọc đầu vào tiêu chuẩn.

Đối số LIST được truyền cho các tùy chọn -f , -b -c có thể là một số nguyên, nhiều số nguyên được phân tách bằng dấu phẩy, một phạm vi số nguyên hoặc nhiều phạm vi số nguyên được phân tách bằng dấu phẩy. Mỗi phạm vi có thể là một trong những điều sau đây:

  • N trường Nth, byte hoặc ký tự, bắt đầu từ 1. N- từ trường Nth, byte hoặc ký tự, đến cuối dòng. NM từ trường Nth đến trường Mth, byte hoặc ký tự. -M từ trường đầu tiên đến trường Mth, byte hoặc ký tự.

Cách cắt theo trường

Lệnh cắt chủ yếu được sử dụng để hiển thị các trường được chọn từ mỗi dòng tệp hoặc đầu vào tiêu chuẩn. Khi không được chỉ định, dấu phân cách mặc định là TAB TẠO.

Trong các ví dụ dưới đây, chúng tôi sẽ sử dụng tệp sau. Tất cả các trường được phân tách bằng các tab.

test.txt

245:789 4567 M:4540 Admin 01:10:1980 535:763 4987 M:3476 Sales 11:04:1978

Để hiển thị trường thứ 1 và thứ 3 bạn sẽ sử dụng:

cut test.txt -f 1, 3

245:789 M:4540 535:763 M:3476

Hoặc nếu bạn muốn hiển thị từ trường thứ 1 đến thứ 4:

cut test.txt -f -4

245:789 4567 M:4540 Admin 535:763 4987 M:3476 Sales

Cách cắt dựa trên dấu phân cách

Để cắt dựa trên một dấu phân cách, sử dụng tùy chọn -d theo sau là dấu phân cách bạn muốn sử dụng.

Ví dụ: để hiển thị các trường thứ 1 và thứ 3 bằng cách sử dụng:

cut test.txt -d ':' -f 1, 3

245:4540 Admin 01 535:3476 Sales 11

Bạn có thể sử dụng bất kỳ ký tự đơn nào làm dấu phân cách. Trong ví dụ sau, chúng tôi đang sử dụng ký tự khoảng trắng làm dấu phân cách và in trường thứ 2:

echo "Lorem ipsum dolor sit amet" | cut -d ' ' -f 2

ipsum

Làm thế nào để bổ sung cho việc lựa chọn

Để bổ sung cho danh sách trường lựa chọn, hãy sử dụng tùy chọn - bổ sung. Điều này sẽ chỉ in những trường không được chọn với tùy chọn -f .

Lệnh sau sẽ in tất cả các trường trừ trường thứ 1 và thứ 3:

cut test.txt -f 1, 3 --complement

4567 Admin 01:10:1980 4987 Sales 11:04:1978

Làm thế nào để xác định một dấu phân cách đầu ra

Để chỉ định dấu phân cách đầu ra, hãy sử dụng tùy chọn --output-delimiter . Ví dụ: để đặt dấu phân cách đầu ra thành _ bạn sẽ sử dụng:

cut test.txt -f 1, 3 --output-delimiter='_'

245:789_M:4540 535:763_M:3476

Cách cắt theo byte và ký tự

Trước khi đi xa hơn, hãy phân biệt giữa byte và ký tự.

Một byte là 8 bit và có thể biểu thị 256 giá trị khác nhau. Khi tiêu chuẩn ASCII được thiết lập, nó đã tính đến tất cả các chữ cái, số và ký hiệu cần thiết để làm việc với tiếng Anh. Bảng ký tự ASCII có 128 ký tự và mỗi ký tự được biểu thị bằng một byte. Khi máy tính bắt đầu trở nên phổ biến trên toàn cầu, các công ty công nghệ bắt đầu giới thiệu mã hóa ký tự mới cho các ngôn ngữ khác nhau và cho các ngôn ngữ có hơn 256 ký tự, không thể lập bản đồ 1 đến 1 đơn giản. Điều này dẫn đến các vấn đề khác nhau như chia sẻ tài liệu hoặc duyệt trang web và một tiêu chuẩn Unicode mới có thể xử lý hầu hết các hệ thống chữ viết của thế giới là cần thiết. UTF-8 được tạo ra để giải quyết những vấn đề này. Trong UTF-8, không phải tất cả các ký tự được biểu thị bằng 1 byte. Các ký tự có thể được biểu diễn với 1 byte đến 4 byte.

Trong các ví dụ sau, chúng tôi đang sử dụng ký tự ü có 2 byte.

Sử dụng tùy chọn -b ( --bytes ) để cắt ra một phần của dòng bằng cách chỉ định vị trí byte.

Chọn byte thứ 5:

echo 'drüberspringen' | cut -b 5

b

Chọn byte thứ 5, 9 và 13:

echo 'drüberspringen' | cut -b 5, 9, 13

bpg

Chọn phạm vi từ byte thứ 1 đến thứ 5:

echo 'drüberspringen' | cut -b 1-5

drüb

Tại thời điểm viết bài viết này, phiên bản cắt được gói trong GNU coreutils không có tùy chọn để cắt theo ký tự. Khi sử dụng tùy chọn -c cắt sẽ hoạt động giống như khi sử dụng tùy chọn -b .

Cắt ví dụ

Lệnh cắt thường được sử dụng kết hợp với các lệnh khác thông qua đường ống. Dưới đây là một vài ví dụ.

Lấy danh sách tất cả người dùng

Đầu ra của lệnh getent passwd được thông qua để cut mà in ra tệp 1 được sử dụng : dưới dạng dấu phân cách.

getent passwd | cut -d ':' -f1

Xem 10 lệnh được sử dụng thường xuyên nhất

Trong ví dụ sau đây, cắt được sử dụng để tách 8 byte đầu tiên từ mỗi dòng của đầu ra lệnh history .

history | cut -c8- | sort | uniq -c | sort -rn | head

Phần kết luận

Bây giờ bạn nên hiểu rõ về cách sử dụng lệnh cắt Linux. Mặc dù rất hữu ích, lệnh cắt có một số hạn chế. Nó không hỗ trợ chỉ định nhiều hơn một ký tự là dấu phân cách và nó không hỗ trợ nhiều số đo.

cắt thiết bị đầu cuối