HBạn có bao giờ cần thay thế một số văn bản trong tệp một cách thực sự nhanh chóng? Sau đó, bạn phải mở trình soạn thảo văn bản của mình, tìm dòng và sau đó nhập văn bản thay thế của bạn. Nếu bạn phải làm như vậy nhiều lần thì sao? Điều gì sẽ xảy ra nếu nó cũng không giống hệt nhau và bạn phải chạy nhiều tìm kiếm và thay thế mỗi lần xuất hiện? Nó trở nên tẻ nhạt rất nhanh chóng, nhưng có một cách tốt hơn để làm điều đó với một công cụ có tên là quyến rũ.

Chúng tôi đã viết về POSIX và xem qua một số giao diện và tiện ích mà hệ thống phải cung cấp để tuân thủ POSIX. Công cụ dòng lệnh quyến rũ là một trong những tiện ích cung cấp một cách giàu tính năng để lọc, tìm, thay thế và sắp xếp lại dữ liệu trong tệp văn bản. Nó là một công cụ cực kỳ mạnh mẽ, rất dễ bắt đầu, nhưng rất khó để học qua và làm lại do số lượng tính năng dường như vô tận của nó.

Đầu tiên, chúng ta cần lưu ý rằng việc triển khai GNU của quyến rũ, trong khi tuân thủ POSIX, vượt lên trên và vượt ra ngoài đặc điểm kỹ thuật để cung cấp các tiện ích và tính năng không được nêu trong yêu cầu POSIX. Khi gọi quyến rũ bạn sẽ muốn sử dụng –Posix gắn cờ để vô hiệu hóa tất cả các tiện ích mở rộng GNU cụ thể và cho phép tính di động cao hơn. Đây là chìa khóa khi viết script mà bạn định chạy trên nhiều nền tảng khác nhau. Ví dụ: bộ công cụ được cung cấp với macOS sẽ không phải là công cụ GNU, những công cụ thường được tìm thấy trên * BSDs cũng vậy.

Cách sử dụng quyến rũ lệnh trong Linux?

Cú pháp chung như sau

quyến rũ [OPTION]… {Script-only-if-no-other-script} [input-file]…

Nó hơi khó hiểu, nhưng về cơ bản nó mong đợi các tùy chọn theo sau là một tập hợp các hướng dẫn ở dạng văn bản, và sau đó là tệp để đọc. Trong trường hợp bạn chuyển văn bản đến quyến rũ, bạn có thể bỏ qua tệp đầu vào.

Có một số chế độ khác nhau quyến rũ có thể hoạt động trong, một số có thể được kết hợp. Những điều chúng tôi sẽ đề cập là những điều cơ bản, nhưng chúng vẫn rất mạnh mẽ và thậm chí còn trở nên nhiều hơn nữa khi bạn phát triển kiến ​​thức của mình về quyến rũ và biểu thức chính quy.

  • p – In – in các dòng có văn bản phù hợp
  • d – Xóa – xóa các dòng có văn bản phù hợp
  • s – Thay thế – thay thế hoặc thay thế văn bản phù hợp trên mỗi dòng

Ngoài các chế độ hoạt động, có nhiều cờ có thể được sử dụng ở cuối văn bản mẫu để tăng cường hoạt động của lệnh của bạn. Chúng tôi sẽ sử dụng g cờ để chỉ ra sự thay thế toàn cục thay vì chỉ thay thế lần xuất hiện đầu tiên trên mỗi dòng, theo mặc định.

Xem thêm: Lệnh ‘Cắt’ trong Linux: Giải thích các ứng dụng hữu ích

Một số quyến rũ cờ lệnh (trái ngược với cờ mẫu) chúng tôi sẽ sử dụng như sau:

  • n – ngăn tự động in văn bản không khớp
  • E/r – cho phép các biểu thức chính quy mở rộng
  • i – chỉnh sửa tệp tại chỗ thay vì in ra màn hình

Trước tiên, chúng ta cần thảo luận về khái niệm địa chỉ trong quyến rũ. Địa chỉ chỉ đơn giản là một vị trí trong văn bản. Khi một văn bản khớp với một mẫu đã cho, vị trí khớp sẽ trở thành địa chỉ hiện tại mà lệnh được thực thi. Ngoài ra còn có hỗ trợ cho các dải địa chỉ trong quyến rũ cho phép chỉ định một phần của tệp để xử lý trong khi để yên phần còn lại.

Ở đây, chúng ta có thể chỉ định một loạt các dòng để in –

sed -n ‘2,10p’ myfile.txt

Chúng tôi đã chỉ định các dòng từ 2 đến 10 sẽ được in. Cú pháp trong quyến rũ là kỳ lạ, nhưng nó hiệu quả. Chúng tôi sử dụng -n gắn cờ ở đây để đảm bảo rằng chỉ dòng trùng khớp đó được in, nếu không, tất cả các dòng sẽ được in và những dòng trùng khớp đó được sao chép.

LƯU Ý: Trong quyến rũ, các dòng bắt đầu từ 1, không phải 0.

Ngược lại, chúng ta có thể xóa các dòng giống nhau.

sed ‘2,10d’ myfile.txt

Vì chúng tôi không chỉ hiển thị những người phù hợp, chúng tôi muốn xóa -n cờ để các dòng của chúng tôi in.

Những ví dụ này rất phức tạp, vì vậy thật khó để thấy điều này có thể rất hữu ích như thế nào, nhưng chúng ta sẽ đến đó.

Tiếp theo, chúng ta có thể bắt đầu thay thế các lần xuất hiện của một mẫu cụ thể trong một dòng. Điều này đặc biệt hữu ích cho sysadmins. Bất cứ khi nào tôi cài đặt Linux trên một máy mới, tôi muốn bật sshd, nhưng tôi muốn đảm bảo rằng người dùng root không thể đăng nhập.

sed -i ‘s/[#]PermitRootLogin yes/PermitRootLogin no/g ‘/etc/ssh/sshd_config

Lệnh này sẽ tìm kiếm thông qua /etc/ssh/sshd_config cho dòng chứa #PermitRootLogin có (có hoặc không có dấu #) và thay đổi nó thành PermitRootLogin không tại chỗ. Các dấu ngoặc cho phép kết hợp tùy chọn, rất mạnh mẽ. Các bản phân phối khác nhau có các cấu hình mặc định khác nhau, vì vậy điều này rất tiện dụng.

LƯU Ý: Hãy rất cẩn thận khi sử dụng -Tôi gắn cờ vì bạn có thể dễ dàng mất công việc hoặc phá hủy cấu hình của hệ thống.

Ở đây chúng ta có thể kết hợp một số chức năng khác nhau trong quyến rũ.

sed ‘2,10 {s/hello/Hello/;}’ myfile.txt

Điều này có phần nâng cao hơn. Những gì chúng tôi đang làm ở đây là nói quyến rũ để chạy lệnh trên các dòng từ 2 đến 10. Điều tương tự cũng có thể được thực hiện để in hoặc xóa tất cả các dòng có khớp mẫu cụ thể.

Có nhiều chức năng trong quyến rũ và không có cách nào chúng ta có thể bao quát tất cả. Nếu bạn thích hướng dẫn này, hãy cho chúng tôi biết và chúng tôi chắc chắn sẽ làm thêm một số điều nữa. Cho chúng tôi xem một số yêu thích của bạn quyến rũ các lệnh trong phần bình luận và vui lòng yêu cầu thêm các hướng dẫn lệnh.

Xem thêm: Danh sách các lệnh Linux cơ bản từ A đến Z | Tham chiếu dòng lệnh Linux

This post is also available in: Tiếng Việt

LEAVE A REPLY

Please enter your comment!
Please enter your name here