sed 's/\([.!?] *\)\{0,1\}/\1\\/g' <infile | xargs printf %s\\n
Tôi đã có thứ này foldtrước đây - rất nhanh - nhưng tôi nhận ra rằng tôi có thể làm điều tương tự xargskhi phải xử lý đầu vào hoặc thực hiện bất kỳ sedvòng lặp nhánh nào nếu tôi thoát khỏi tất cả mọi thứ không phải là kết thúc char hoặc bất kỳ không gian tiếp theo.
Vì vậy, trong câu lệnh trên sedsẽ khớp chuỗi null hoặc chuỗi kết thúc cho mỗi ký tự (không phải trong chuỗi) xảy ra trong đầu vào. Ở phía bên phải sedthay thế chuỗi null hoặc chuỗi kết thúc trong \1và sau đó chèn dấu gạch chéo ngược. Kết quả là mỗi char nhưng một trong số .!?đó được theo sau bởi ít nhất một khoảng trắng được \thoát dấu gạch chéo ngược. Đây bao gồm các \newline rằng sedchèn sau mỗi lần thay khi nó ghi vào thiết bị xuất chuẩn.
Bởi vì xargssẽ hoàn toàn tạo ra một \newline thoát dấu gạch chéo ngược và sẽ phân chia các đối số mà nó trao cho tiện ích được đặt tên của nó trên các khoảng trắng không bị che giấu, printfkết thúc việc in tất cả các chuỗi giống như câu xargsđọc trong bất kỳ khoảng trống nào trên mỗi dòng. Hơn thế nữa - nó thực hiện theo từng đợt tiếp cận ARGMAXkích thước - càng nhiều càng tốt tại một thời điểm. Và tất nhiên sedcũng nên quản lý công việc của mình khá nhanh - nó chỉ phải thực hiện một thay thế toàn cầu cho mỗi dòng đầu vào.
Các kết quả diễn ra như thế này:
Một số Lorem Ipsum được lấy từ www.lipsum.com :
sed 's/\([.!?] *\)\{0,1\}/\1\\/g' <<LIPSUM | xargs printf %s\\n
Section 1.10.32 of "de Finibus Bonorum et Mal
orum", written by Cicero in 45 BC
"Sed ut perspiciatis unde omnis iste natus er
ror sit voluptatem accusantium doloremque lau
dantium, totam rem aperiam, eaque ipsa quae a
b illo inventore veritatis et quasi architect
o beatae vitae dicta sunt explicabo.
Nemo enim ipsam voluptatem quia voluptas sit
aspernatur aut odit aut fugit, sed quia conse
quuntur magni dolores eos qui ratione volupta
tem sequi nesciunt.
Neque porro quisquam est, qui dolorem ipsum q
uia dolor sit amet, consectetur, adipisci vel
it, sed quia non numquam eius modi tempora in
cidunt ut labore et dolore magnam aliquam qua
erat voluptatem.
Ut enim ad minima veniam, quis ...
...
reiciendis voluptatibus maiores alias consequ
atur aut perferendis doloribus asperiores rep
ellat." 1914 translation by H.
LIPSUM
... mà in ...
Section 1.10.32 of "de Finibus Bonorum et Malorum", written by Cicero in 45 BC
"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.
Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.
Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem.
Ut enim ad minima veniam, quis ...
...
reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat." 1914 translation by H.