Lệnh sort trong Linux

Giới thiệu

Trong lab này, bạn sẽ học cách sử dụng lệnh sort của Linux để sắp xếp các file và đầu ra của các lệnh dựa trên các tiêu chí khác nhau. Lab này bao gồm các kiến thức cơ bản về lệnh sort, bao gồm sắp xếp các file theo thứ tự chữ cái hoặc số, và kết hợp sort với các lệnh Linux khác để thực hiện các tác vụ xử lý văn bản phức tạp hơn. Bạn sẽ học cách sắp xếp các file theo các trường hoặc cột khác nhau, và cách tùy chỉnh hành vi sắp xếp bằng cách sử dụng các tùy chọn khác nhau. Lab này phù hợp cho những người dùng muốn cải thiện kỹ năng xử lý và chỉnh sửa văn bản của họ trong môi trường Linux.

Hiểu các kiến thức cơ bản về lệnh sort

Trong bước này, chúng ta sẽ tìm hiểu những kiến thức cơ bản về lệnh sort trong Linux. Lệnh sort được sử dụng để sắp xếp các dòng của một file hoặc đầu ra của một lệnh theo một thứ tự cụ thể.

Để bắt đầu, hãy tạo một file mẫu có tên data.txt với một số dữ liệu chưa được sắp xếp:

echo -e "apple\norange\nbanana\npear" > data.txt

Bây giờ, hãy sắp xếp nội dung của file data.txt bằng lệnh sort:

sort data.txt

Ví dụ đầu ra:

apple
banana
orange
pear

Như bạn có thể thấy, các dòng trong file đã được sắp xếp theo thứ tự bảng chữ cái.

Lệnh sort có một số tùy chọn cho phép bạn tùy chỉnh hành vi sắp xếp. Một số tùy chọn phổ biến bao gồm:

  • -r: Sắp xếp theo thứ tự ngược lại (giảm dần)
  • -n: Sắp xếp theo số
  • -k <field>: Sắp xếp dựa trên một trường hoặc cột cụ thể
  • -t <delimiter>: Sử dụng dấu phân cách trường tùy chỉnh

Ví dụ: để sắp xếp file theo thứ tự ngược lại:

sort -r data.txt

Ví dụ đầu ra:

pear
orange
banana
apple

Lệnh sort cũng có thể được kết hợp với các lệnh Linux khác, chẳng hạn như cat, greppipe, để thực hiện các tác vụ xử lý văn bản phức tạp hơn. Chúng ta sẽ khám phá các trường hợp sử dụng này trong các bước tiếp theo.

Sắp xếp các file theo các tiêu chí khác nhau

Trong bước này, chúng ta sẽ học cách sắp xếp các file dựa trên các tiêu chí khác nhau bằng lệnh sort.

Hãy tạo một file mới có tên data2.txt với một số dữ liệu mẫu:

echo -e "John,25,male\nJane,30,female\nBob,35,male\nAlice,28,female" > data2.txt

Bây giờ, hãy sắp xếp file theo trường đầu tiên (tên):

sort -t ',' -k 1 data2.txt

Ví dụ đầu ra:

Alice,28,female
Bob,35,male
Jane,30,female
John,25,male

Trong ví dụ này, chúng ta đã sử dụng tùy chọn -t ',' để chỉ định dấu phân cách trường là dấu phẩy và tùy chọn -k 1 để sắp xếp dựa trên trường đầu tiên (tên).

Bạn cũng có thể sắp xếp theo giá trị số. Ví dụ: để sắp xếp theo trường thứ hai (tuổi):

sort -t ',' -k 2n data2.txt

Ví dụ đầu ra:

John,25,male
Alice,28,female
Jane,30,female
Bob,35,male

Tùy chọn n trong -k 2n báo cho sort sắp xếp trường thứ hai theo số.

Một tùy chọn hữu ích khác là -r để sắp xếp theo thứ tự ngược lại:

sort -t ',' -k 2nr data2.txt

Ví dụ đầu ra:

Bob,35,male
Jane,30,female
Alice,28,female
John,25,male

Lệnh sort cung cấp nhiều tùy chọn hơn để tùy chỉnh hành vi sắp xếp. Hãy thử nghiệm với các tùy chọn khác nhau để sắp xếp các file của bạn dựa trên các nhu cầu cụ thể của bạn.

Kết hợp sort với các lệnh Linux khác

Trong bước cuối cùng này, chúng ta sẽ khám phá cách kết hợp lệnh sort với các lệnh Linux khác để thực hiện các tác vụ xử lý văn bản nâng cao hơn.

Hãy bắt đầu bằng cách tạo một danh sách các số ngẫu nhiên và sắp xếp chúng:

shuf -i 1-100 -n 10 | sort -n

Ví dụ đầu ra:

4
12
16
26
31
41
58
67
84
97

Trong ví dụ này, chúng ta đã sử dụng lệnh shuf để tạo 10 số ngẫu nhiên từ 1 đến 100, và sau đó chuyển đầu ra đến lệnh sort để sắp xếp các số theo thứ tự số.

Bạn cũng có thể kết hợp sort với grep để lọc và sắp xếp đầu ra:

cat data2.txt | grep 'female' | sort -t ',' -k 2n

Ví dụ đầu ra:

Alice,28,female
Jane,30,female

Lệnh này đọc file data2.txt, lọc các dòng chứa 'female', và sau đó sắp xếp đầu ra theo trường thứ hai (tuổi) theo thứ tự số.

Một sự kết hợp hữu ích khác là sort với uniq để loại bỏ các dòng trùng lặp:

cat data2.txt | sort | uniq

Ví dụ đầu ra:

Alice,28,female
Bob,35,male
Jane,30,female
John,25,male

Trong ví dụ này, chúng ta trước tiên sắp xếp file data2.txt, và sau đó sử dụng lệnh uniq để loại bỏ bất kỳ dòng trùng lặp nào.

Khả năng là vô tận khi bạn kết hợp lệnh sort với các công cụ Linux khác. Hãy thử nghiệm với các kết hợp khác nhau để giải quyết các tác vụ xử lý văn bản của bạn hiệu quả hơn.

Tóm tắt

Trong lab này, chúng ta đã tìm hiểu những kiến thức cơ bản về lệnh sort trong Linux, được sử dụng để sắp xếp các dòng của một file hoặc đầu ra của một lệnh theo một thứ tự cụ thể. Chúng ta đã khám phá các tùy chọn khác nhau để tùy chỉnh hành vi sắp xếp, chẳng hạn như sắp xếp theo thứ tự ngược lại, theo số hoặc dựa trên các trường cụ thể. Ngoài ra, chúng ta đã khám phá cách kết hợp lệnh sort với các lệnh Linux khác như cat, greppipe để thực hiện các tác vụ xử lý văn bản phức tạp hơn. Cuối cùng, chúng ta đã học cách sắp xếp các file theo các tiêu chí khác nhau, bao gồm sắp xếp theo tên hoặc tuổi và sử dụng các dấu phân cách trường tùy chỉnh.

400+ câu lệnh phổ biến trong Linux