sed 's/\([.!?] *\)\{0,1\}/\1\\/g' <infile | xargs printf %s\\n
Tôi đã có thứ này fold
trướ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ự xargs
khi phải xử lý đầu vào hoặc thực hiện bất kỳ sed
vò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 sed
sẽ 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 sed
thay thế chuỗi null hoặc chuỗi kết thúc trong \1
và 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 \n
ewline rằng sed
chèn sau mỗi lần thay khi nó ghi vào thiết bị xuất chuẩn.
Bởi vì xargs
sẽ hoàn toàn tạo ra một \n
ewline 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, printf
kế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 ARGMAX
kích thước - càng nhiều càng tốt tại một thời điểm. Và tất nhiên sed
cũ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.