<Trước | Nội dung | Tiếp theo>
fmt - Một trình định dạng văn bản đơn giản
fmt chương trình cũng gấp văn bản, cộng với nhiều hơn nữa. Nó chấp nhận các tệp hoặc đầu vào tiêu chuẩn và thực hiện định dạng đoạn văn trên luồng văn bản. Về cơ bản, nó điền và nối các dòng trong văn bản trong khi vẫn giữ nguyên các dòng trống và thụt lề.
Để chứng minh, chúng tôi sẽ cần một số văn bản. Hãy nâng một số từ fmt trang thông tin:
`fmt 'đọc từ các đối số FILE được chỉ định (hoặc đầu vào tiêu chuẩn nếu không có đầu vào nào được đưa ra) và ghi vào đầu ra tiêu chuẩn.
Theo mặc định, các dòng trống, khoảng cách giữa các từ và thụt lề là
`fmt 'đọc từ các đối số FILE được chỉ định (hoặc đầu vào tiêu chuẩn nếu không có đầu vào nào được đưa ra) và ghi vào đầu ra tiêu chuẩn.
Theo mặc định, các dòng trống, khoảng cách giữa các từ và thụt lề là
được bảo toàn ở đầu ra; các dòng đầu vào liên tiếp có thụt lề khác nhau không được nối; các tab được mở rộng trên đầu vào và giới thiệu trên đầu ra.
`fmt 'thích ngắt dòng ở cuối câu và cố gắng tránh ngắt dòng sau từ đầu tiên của câu hoặc trước từ cuối cùng của câu. "Dấu ngắt câu" được định nghĩa là cuối đoạn văn hoặc một từ kết thúc bằng bất kỳ dấu nào trong số `.?! ', Theo sau là hai dấu cách hoặc cuối dòng, bỏ qua bất kỳ dấu ngoặc đơn hoặc dấu ngoặc kép xen vào. Giống như TeX, `fmt 'đọc toàn bộ" đoạn văn "trước khi chọn ngắt dòng; thuật toán là một biến thể của thuật toán do Donald E. Knuth và Michael F. Plass đưa ra trong "Ngắt đoạn văn thành dòng",
`Phần mềm - Thực hành & Kinh nghiệm '11, 11 (tháng 1981 năm 1119), 1184-XNUMX.
được bảo toàn ở đầu ra; các dòng đầu vào liên tiếp có thụt lề khác nhau không được nối; các tab được mở rộng trên đầu vào và giới thiệu trên đầu ra.
`fmt 'thích ngắt dòng ở cuối câu và cố gắng tránh ngắt dòng sau từ đầu tiên của câu hoặc trước từ cuối cùng của câu. "Dấu ngắt câu" được định nghĩa là cuối đoạn văn hoặc một từ kết thúc bằng bất kỳ dấu nào trong số `.?! ', Theo sau là hai dấu cách hoặc cuối dòng, bỏ qua bất kỳ dấu ngoặc đơn hoặc dấu ngoặc kép xen vào. Giống như TeX, `fmt 'đọc toàn bộ" đoạn văn "trước khi chọn ngắt dòng; thuật toán là một biến thể của thuật toán do Donald E. Knuth và Michael F. Plass đưa ra trong "Ngắt đoạn văn thành dòng",
`Phần mềm - Thực hành & Kinh nghiệm '11, 11 (tháng 1981 năm 1119), 1184-XNUMX.
Chúng tôi sẽ sao chép văn bản này vào trình soạn thảo văn bản của mình và lưu tệp dưới dạng fmt-info.txt. Bây giờ, giả sử chúng tôi muốn định dạng lại văn bản này để vừa với một cột rộng năm mươi ký tự. Chúng tôi có thể làm điều này bằng cách xử lý tệp với fmt và -w tùy chọn:
[tôi @ linuxbox ~] $ fmt -w 50 fmt-info.txt | cái đầu
`fmt 'đọc từ các đối số FILE được chỉ định (hoặc đầu vào tiêu chuẩn nếu
không có gì được đưa ra), và ghi vào đầu ra tiêu chuẩn.
Theo mặc định, các dòng trống, khoảng cách giữa các từ và thụt lề là
được bảo toàn ở đầu ra; các dòng đầu vào liên tiếp có thụt lề khác nhau không được nối; các tab được mở rộng trên đầu vào và giới thiệu trên đầu ra.
[tôi @ linuxbox ~] $ fmt -w 50 fmt-info.txt | cái đầu
`fmt 'đọc từ các đối số FILE được chỉ định (hoặc đầu vào tiêu chuẩn nếu
không có gì được đưa ra), và ghi vào đầu ra tiêu chuẩn.
Theo mặc định, các dòng trống, khoảng cách giữa các từ và thụt lề là
được bảo toàn ở đầu ra; các dòng đầu vào liên tiếp có thụt lề khác nhau không được nối; các tab được mở rộng trên đầu vào và giới thiệu trên đầu ra.
Chà, đó là một kết quả khó xử. Có lẽ chúng ta thực sự nên đọc văn bản này, vì nó giải thích những gì đang xảy ra:
Theo mặc định, các dòng trống, khoảng cách giữa các từ và thụt đầu dòng được giữ nguyên trong đầu ra; các dòng đầu vào liên tiếp có thụt lề khác nhau không được nối; các tab được mở rộng trên đầu vào và giới thiệu trên đầu ra.
Vì vậy, fmt là giữ nguyên thụt lề của dòng đầu tiên. May mắn thay, fmt cung cấp một tùy chọn để sửa điều này:
[tôi @ linuxbox ~] $ fmt -cw 50 fmt-info.txt
`fmt 'đọc từ các đối số FILE được chỉ định (hoặc đầu vào tiêu chuẩn nếu không có đầu vào nào được đưa ra) và ghi vào đầu ra tiêu chuẩn.
[tôi @ linuxbox ~] $ fmt -cw 50 fmt-info.txt
`fmt 'đọc từ các đối số FILE được chỉ định (hoặc đầu vào tiêu chuẩn nếu không có đầu vào nào được đưa ra) và ghi vào đầu ra tiêu chuẩn.
Theo mặc định, các dòng trống, khoảng cách giữa các từ và thụt đầu dòng được giữ nguyên trong đầu ra; các dòng đầu vào liên tiếp có thụt lề khác nhau không được nối; các tab được mở rộng trên đầu vào và giới thiệu trên đầu ra.
`fmt 'thích ngắt dòng ở cuối câu và cố gắng tránh ngắt dòng sau từ đầu tiên của câu hoặc trước
từ cuối cùng của câu. "Dấu ngắt câu" được định nghĩa là cuối đoạn văn hoặc một từ kết thúc bằng bất kỳ dấu nào trong số `.?! ', Theo sau là hai dấu cách hoặc cuối dòng, bỏ qua bất kỳ
xen vào dấu ngoặc đơn hoặc dấu ngoặc kép. Giống như TeX,
`fmt 'đọc toàn bộ" đoạn văn "trước khi chọn ngắt dòng; thuật toán là một biến thể của
do Donald E. Knuth và Michael F. Plass đưa ra trong "Ngắt đoạn văn thành dòng",
`Phần mềm - Thực hành & Kinh nghiệm '11, 11
(Tháng 1981 năm 1119), 1184-XNUMX.
Theo mặc định, các dòng trống, khoảng cách giữa các từ và thụt đầu dòng được giữ nguyên trong đầu ra; các dòng đầu vào liên tiếp có thụt lề khác nhau không được nối; các tab được mở rộng trên đầu vào và giới thiệu trên đầu ra.
`fmt 'thích ngắt dòng ở cuối câu và cố gắng tránh ngắt dòng sau từ đầu tiên của câu hoặc trước
từ cuối cùng của câu. "Dấu ngắt câu" được định nghĩa là cuối đoạn văn hoặc một từ kết thúc bằng bất kỳ dấu nào trong số `.?! ', Theo sau là hai dấu cách hoặc cuối dòng, bỏ qua bất kỳ
xen vào dấu ngoặc đơn hoặc dấu ngoặc kép. Giống như TeX,
`fmt 'đọc toàn bộ" đoạn văn "trước khi chọn ngắt dòng; thuật toán là một biến thể của
do Donald E. Knuth và Michael F. Plass đưa ra trong "Ngắt đoạn văn thành dòng",
`Phần mềm - Thực hành & Kinh nghiệm '11, 11
(Tháng 1981 năm 1119), 1184-XNUMX.
Tốt hơn nhiều. Bằng cách thêm -c tùy chọn, bây giờ chúng tôi có kết quả mong muốn.
fmt có một số tùy chọn thú vị:
Bảng 21-3: Tùy chọn fmt
Mô tả tùy chọn
Mô tả tùy chọn
-c Hoạt động trong lề vương miện chế độ. Thao tác này giữ nguyên độ thụt đầu dòng của hai dòng đầu tiên của đoạn văn. Các dòng tiếp theo được căn chỉnh với độ thụt của dòng thứ hai.
-p chuỗi Chỉ định dạng những dòng bắt đầu bằng tiền tố chuỗi. Sau khi định dạng, nội dung của chuỗi được đặt trước mỗi dòng được định dạng lại. Tùy chọn này có thể được sử dụng để định dạng văn bản trong các chú thích mã nguồn. Ví dụ: bất kỳ ngôn ngữ lập trình hoặc tệp cấu hình nào sử dụng ký tự “#” để mô tả một nhận xét có thể được định dạng bằng cách chỉ định -P '# ' để chỉ các nhận xét sẽ được định dạng. Xem ví dụ bên dưới.
-s Chế độ chỉ tách. Trong chế độ này, các dòng sẽ chỉ được tách để phù hợp với chiều rộng cột được chỉ định. Các dòng ngắn sẽ không được nối với nhau để điền vào các dòng. Chế độ này hữu ích khi định dạng văn bản, chẳng hạn như mã mà việc nối không được mong muốn.
-u Thực hiện đồng đều khoảng cách. Điều này sẽ áp dụng “máy đánh chữ-
định dạng style ”cho văn bản. Điều này có nghĩa là một khoảng trắng duy nhất giữa các từ và hai khoảng trắng giữa các câu. Chế độ này hữu ích để loại bỏ “sự biện minh”, tức là văn bản đã được đệm bằng khoảng trắng để buộc phải căn chỉnh ở cả lề trái và lề phải.
-w chiều rộng Định dạng văn bản để vừa với một cột chiều rộng rộng ký tự. Giá trị mặc định là 75 ký tự. Ghi chú: fmt thực sự định dạng các dòng ngắn hơn một chút so với chiều rộng được chỉ định để cho phép cân bằng dòng.
-p tùy chọn đặc biệt thú vị. Với nó, chúng ta có thể định dạng các phần đã chọn của tệp, với điều kiện các dòng được định dạng đều bắt đầu bằng cùng một chuỗi ký tự. Nhiều ngôn ngữ lập trình sử dụng dấu thăng (#) để chỉ ra phần đầu của một nhận xét và do đó có thể được định dạng bằng cách sử dụng tùy chọn này. Hãy tạo một tệp mô phỏng một chương trình sử dụng các chú thích:
[tôi @ linuxbox ~] $ cat> fmt-code.txt
# Tệp này chứa mã với các nhận xét.
# Dòng này là một bình luận.
# Tiếp theo là một dòng bình luận khác.
# Và khác.
Mặt khác, đây là một dòng mã. Và một dòng mã khác.
Và cái khác.
[tôi @ linuxbox ~] $ cat> fmt-code.txt
# Tệp này chứa mã với các nhận xét.
# Dòng này là một bình luận.
# Tiếp theo là một dòng bình luận khác.
# Và khác.
Mặt khác, đây là một dòng mã. Và một dòng mã khác.
Và cái khác.
Tệp mẫu của chúng tôi chứa các nhận xét bắt đầu bằng chuỗi “#” (dấu # theo sau là dấu cách) và các dòng “mã” thì không. Bây giờ, sử dụng fmt, chúng tôi có thể định dạng các nhận xét và để nguyên mã:
[tôi @ linuxbox ~] $ fmt -w 50 -p '#' fmt-code.txt
# Tệp này chứa mã với các nhận xét.
# Dòng này là một bình luận. Tiếp theo là một
# dòng bình luận. Và cái khác.
Mặt khác, đây là một dòng mã. Và một dòng mã khác.
Và cái khác.
[tôi @ linuxbox ~] $ fmt -w 50 -p '#' fmt-code.txt
# Tệp này chứa mã với các nhận xét.
# Dòng này là một bình luận. Tiếp theo là một
# dòng bình luận. Và cái khác.
Mặt khác, đây là một dòng mã. Và một dòng mã khác.
Và cái khác.
Lưu ý rằng các dòng chú thích liền kề được nối với nhau, trong khi các dòng trống và các dòng không bắt đầu bằng tiền tố đã chỉ định được giữ nguyên.
<Trước | Nội dung | Tiếp theo>