Chỉ cần sao chép các dòng đó vào bộ đệm giữ (sau đó xóa chúng) và khi trên dòng cuối cùng nối thêm nội dung của bộ đệm giữ vào không gian mẫu:
some command | sed '1,NUMBER{ # in this range
H # append line to hold space and
1h # overwrite if it's the 1st line
d # then delete the line
}
$G' # on last line append hold buffer content
Với gnu sed
bạn có thể viết nó như là
some command | sed '1,NUMBER{H;1h;d;};$G'
Đây là một cách khác với ol ' ed
(nó r
dẫn đầu ra của some command
bộ đệm văn bản và sau đó đặt m
các dòng 1,NUMBER
sau la $
t one):
ed -s <<IN
r ! some command
1,NUMBERm$
,p
q
IN
Lưu ý rằng - như đã chỉ ra - cả hai sẽ thất bại nếu đầu ra có ít hơn NUMBER
+1 dòng. Một cách tiếp cận vững chắc hơn sẽ là ( gnu sed
cú pháp):
some command | sed '1,NUMBER{H;1h;$!d;${g;q;};};$G'
cái này chỉ xóa các dòng trong phạm vi đó miễn là chúng không phải là dòng cuối cùng ( $!d
) - nếu không nó sẽ ghi đè lên không gian mẫu bằng nội dung bộ đệm giữ ( g
) và sau đó là q
uits (sau khi in không gian mẫu hiện tại).