Điều này đảo ngược dòng tập tin theo dòng.
sed '1 G;! h;! $ d' tập tin
Đầu tiên, sedcó một không gian giữ và một không gian mô hình . Chúng ta phải phân biệt giữa chúng trước khi tập trung vào lệnh cụ thể đó.
Khi sedđọc một dòng mới, nó được tải vào không gian mẫu. Do đó, không gian đó được ghi đè mỗi khi một dòng mới được xử lý. Mặt khác, không gian giữ nhất quán trong toàn bộ quá trình xử lý và các giá trị có thể được lưu trữ ở đó để sử dụng sau này.
Theo lệnh:
Có 3 lệnh trong bản Tuyên Bố này: 1!G, hvà$!d
1!Gcó nghĩa là Glệnh được thực thi trên mỗi dòng trừ dòng đầu tiên ( !phủ định 1). Gcó nghĩa là nối thêm những gì trong không gian giữ vào không gian mẫu.
háp dụng cho mọi dòng. Nó sao chép không gian mẫu vào không gian giữ (và ghi đè lên nó).
$!dáp dụng cho mọi dòng trừ dòng cuối cùng ( $đại diện cho dòng cuối cùng, !phủ nhận nó). dlà lệnh xóa dòng (không gian mẫu).
- Bây giờ, khi dòng đầu tiên được đọc,
sedthực thi hlệnh. Dòng đầu tiên được sao chép vào không gian giữ. Sau đó, nó sẽ bị xóa, vì nó phù hợp với $!điều kiện. sedtiếp tục với dòng thứ hai.
- Dòng thứ hai khớp với điều kiện
1!(không phải là dòng đầu tiên) và do đó, không gian giữ (có dòng đầu tiên) được thêm vào không gian mẫu (có dòng thứ hai). Sau đó, trong không gian mẫu, bây giờ có dòng thứ hai theo sau là dòng đầu tiên, được phân định bởi một dòng mới. Bây giờ, hlệnh áp dụng (như trong mỗi dòng); tất cả những gì trong không gian mẫu được sao chép vào không gian giữ. Câu lệnh thứ ba ( $!d) được áp dụng: Dòng bị xóa khỏi không gian mẫu.
- Bước 2 bây giờ được thực hiện với tất cả các dòng. Chúng tôi bỏ qua đến dòng cuối cùng.
- Trong dòng cuối cùng (
$) gần như tất cả Bước 2 đã hoàn thành, nhưng không phải là phần xóa ( d). sed, khi được gọi mà không có -n, sẽ tự động in không gian mẫu ở cuối quá trình xử lý cho mỗi dòng đầu vào. Vì vậy, khi không bị xóa, không gian mẫu được in. Nó chứa tất cả các dòng theo thứ tự đảo ngược .