Các công cụ chỉnh sửa văn bản Linux thiết yếu: cut, sort, uniq, tr và nhiều hơn

Tác giả Starlink, T.M.Một 16, 2024, 11:27:07 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 2 Khách đang xem chủ đề.

Cắt và chỉnh sửa văn bản từ dòng lệnh bằng các lệnh cổ điển này.

Linux là một hệ thống tuyệt vời để sửa đổi văn bản trên dòng lệnh vì có rất nhiều công cụ có thể thay đổi văn bản. Nhiều công cụ đã có từ thời Unix. Sau đây là một số công cụ mà mọi người dùng Linux nên biết.


1. cut: Chọn các trường

cut là một tiện ích cơ bản có thể lấy các cột dữ liệu dạng bảng và hiển thị một hoặc một vài cột trong số đó. Các tùy chọn -f chọn một trường, nhiều trường hoặc phạm vi. Dấu phân cách mặc định là một tab, nhưng bạn có thể thay đổi điều đó bằng tùy chọn -d. Ví dụ, để chọn các trường 1 và 3 bằng cách sử dụng khoảng trắng làm dấu phân cách

Mã nguồn [Chọn]
cut -f 1,3 -d ' '
Mặc dù cut có thể sử dụng được, nhưng có những công cụ tốt hơn được đề cập bên dưới. awk là một công cụ mạnh mẽ để tách dữ liệu văn bản thuần túy dạng bảng. Nó cũng thông minh hơn nhiều về khoảng trắng, có thể chọn và thao tác các trường dễ dàng hơn.

2. sort: Sắp xếp văn bản trong Terminal

Lệnh sort sắp xếp mọi văn bản mà nó nhận được. Phương pháp thông thường là các dòng có số sẽ đứng đầu và được sắp xếp theo thứ tự, tiếp theo là các dòng bắt đầu bằng chữ cái, được sắp xếp theo thứ tự bảng chữ cái. Bạn có thể thay đổi điều này bằng các tùy chọn. Bạn có thể sử dụng -d cho "thứ tự từ điển".


sort được sử dụng hiệu quả nhất trong các đường ống như thế này:

Mã nguồn [Chọn]
some_command | cut -f1 | sort -d
Một tùy chọn hữu ích khác là -i để bỏ qua trường hợp và -n để buộc sắp xếp theo số. Có nhiều tùy chọn hơn trong trang hướng dẫn, chẳng hạn như đối với phiên bản GNU.

3. uniq: Xóa các mục trùng lặp

uniq hữu ích để loại bỏ các mục trùng lặp khỏi văn bản. Nói cách khác, nó sàng lọc các mục "duy nhất", do đó có tên như vậy. Khi bạn chạy văn bản thông qua uniq, một tệp văn bản dưới dạng đối số như "tệp uniq" hoặc từ đầu vào chuẩn, nó sẽ in luồng văn bản ra màn hình trừ khi được chuyển hướng dưới dạng tệp có bất kỳ mục trùng lặp nào bị bỏ qua.


Ví dụ, trong một tập tin có chứa:

  • dog
  • cat
  • apple
  • apple
  • moose

Bạn sẽ nhận lại được:

  • dog
  • cat
  • apple
  • moose

Từ "apple" hiện chỉ xuất hiện một lần.

Giống như các tiện ích khác, nó phát huy tác dụng khi bạn sử dụng trong các đường ống hoạt động trên I/O tiêu chuẩn :

Mã nguồn [Chọn]
some_command | cut -f1 | sort -d | uniq
Bạn có thể thấy kỹ thuật kết hợp các lệnh trong một đường ống này hiệu quả như thế nào từ Brian Kernighan, một trong những nhà phát triển Unix đầu tiên tại Bell Labs và là một trong những đồng tác giả của cuốn sách nổi tiếng "Ngôn ngữ lập trình C".

Bạn có thể thấy MacGyver, một trình kiểm tra chính tả, sử dụng các tiện ích này ngay trong thiết bị đầu cuối trong video này từ năm 1982 bắt đầu từ phút 5:15:

4. tr: Thay thế các ký tự

tr là tiện ích cho phép bạn thay thế các ký tự riêng lẻ trong văn bản. Một lần nữa, tiện ích này hữu ích nhất trong luồng văn bản. Bạn có thể thay thế một ký tự cụ thể, chẳng hạn như a bằng c hoặc một phạm vi ký tự.

Đối số mặc định của tr là các ký tự bạn muốn thay thế và nội dung bạn muốn thay thế chúng.


Ví dụ, nếu bạn muốn viết hoa mọi chữ thường trong một luồng văn bản, bạn sẽ sử dụng lệnh này: Lệnh này yêu cầu tr lấy bất kỳ ký tự thường nào trong phạm vi "a" đến "z" và đổi nó thành ký tự hoa tương ứng. Đặt các mẫu bạn muốn trong dấu ngoặc đơn để shell biết rằng bạn muốn tr xử lý chúng. Nếu không, shell sẽ đưa ra lỗi cú pháp.

Nếu bạn muốn chuyển thành chữ thường, bạn có thể đảo ngược thứ tự:

Mã nguồn [Chọn]
tr 'A-Z' 'a-z'
5. sed: Tìm và Thay thế Văn bản

Nếu bạn muốn thay thế văn bản mạnh mẽ hơn, sed là một tiện ích bạn nên xem xét. Quá phức tạp để đi sâu vào tất cả các tính năng của nó, nhưng tôi sẽ chỉ ra một trong những cách sử dụng phổ biến nhất của nó, tìm kiếm và thay thế văn bản bằng biểu thức chính quy.


Biểu thức chính quy là một cách mạnh mẽ để tìm kiếm văn bản cho phép bạn chỉ định tìm kiếm xuống đến ký tự. Trong ví dụ này, chúng tôi sẽ thay thế Windows bằng Linux:

Mã nguồn [Chọn]
sed 's/Windows/Linux/'
Lệnh này yêu cầu sed tìm kiếm mẫu ký tự "Linux" và thay thế chúng bằng biểu thức "Windows". Biểu thức chính quy được sử dụng rộng rãi trong Linux, bao gồm cả trong lệnh grep cũng như nhiều trình soạn thảo, do đó chúng rất cần thiết nếu bạn nghiêm túc muốn sử dụng các tiện ích Linux.

Một lần nữa, hãy đặt các lệnh trong dấu ngoặc đơn để chúng chạy tới sed thay vì shell.

6. awk: Quét mẫu mạnh mẽ

awk là một lệnh mạnh mẽ thực sự là một ngôn ngữ lập trình. Ban đầu nó được đặt theo tên của những người sáng tạo ra nó, Alfred Aho, Peter Weinberger và người bạn Brian Kernighan của chúng tôi.


Nó rất phù hợp để chọn ra các mẫu trong luồng văn bản. Ví dụ, nếu chúng ta muốn in người dùng và các lệnh họ đang chạy, chúng ta sẽ sử dụng đường ống này:

Mã nguồn [Chọn]
ps aux | awk '{print $1, 11}'
Câu lệnh này yêu cầu awk lấy đầu ra của lệnh ps và in ra trường đầu tiên và trường thứ 11. Còn rất nhiều điều về awk mà không thể đề cập hết trong phần này, nhưng bạn có thể thấy nó hữu ích như thế nào.

7. Trình soạn thảo văn bản yêu thích của bạn: Chọn vũ khí của bạn

Có lẽ công cụ chỉnh sửa văn bản quan trọng nhất là trình soạn thảo văn bản của bạn. Có vẻ như mọi người đều đam mê với lựa chọn trình soạn thảo của mình. "Cuộc chiến trình soạn thảo" kinh điển là giữa Emacs và Vi, hay đúng hơn là Vim. Nếu bạn nghiêm túc với Linux, đây là nơi bạn sẽ dành phần lớn thời gian của mình. Nếu bạn chưa quyết định chọn một, hãy thử một số trình soạn thảo và xem bạn thích chúng như thế nào.

Nhiều trình soạn thảo có bộ tính năng riêng. Quyết định phụ thuộc nhiều vào sở thích. Tôi chỉ thấy phong cách lệnh vi của Vim thoải mái nhất với ngón tay của tôi, nhưng trải nghiệm của bạn có thể khác.