SHELL中pr命令的實(shí)現(xiàn)
在 Bash 中,pr 命令是一個(gè)用于格式化文本文件以便打印的工具。它最初設(shè)計(jì)用于將文本文件轉(zhuǎn)換為適合打印的格式,支持多列輸出、頁眉、頁碼、行號(hào)等功能。雖然現(xiàn)代系統(tǒng)中使用 pr 的頻率較低(更多使用 cat、less 或 enscript 等工具),但在某些場景下,pr 依然非常實(shí)用。
一、pr 命令簡介
pr 是 “print” 的縮寫,主要用于將文本文件分頁,并添加頁眉、頁碼等信息,使其更適于打印或閱讀。
基本語法:
pr [選項(xiàng)] [文件...]
如果沒有指定文件,pr 會(huì)從標(biāo)準(zhǔn)輸入讀取。
二、常用選項(xiàng)
| 選項(xiàng) | 說明 |
|---|---|
| -l N | 設(shè)置每頁的行數(shù)為 N(默認(rèn)是 66 行) |
| -w N 或 -W N | 設(shè)置頁面寬度為 N 個(gè)字符(默認(rèn)是 72 或 80) |
| -t | 不輸出頁眉和頁碼(精簡模式) |
| -n | 添加行號(hào)(每行前加行號(hào)) |
| -N | 指定行號(hào)的寬度(如 -n4 表示 4 位寬行號(hào)) |
| -m | 多文件合并打印(并排顯示多個(gè)文件) |
| -2, -3, … | 指定輸出為 2 列、3 列等 |
| -s[分隔符] | 列之間使用指定分隔符(默認(rèn)是制表符 \t) |
| +N | 從第 N 頁開始打印 |
| -d | 使用雙倍行距輸出 |
| -h "標(biāo)題" | 自定義頁眉標(biāo)題(替換默認(rèn)的文件名和時(shí)間) |
三、實(shí)用示例
1. 基本使用:分頁顯示文件
pr file.txt
輸出會(huì)分為每頁 66 行,帶有頁眉(文件名、日期、頁碼)。
2. 不顯示頁眉頁碼(簡潔輸出)
pr -t file.txt
適合用于后續(xù)管道處理,避免多余信息。
3. 添加行號(hào)
pr -n file.txt
在每行前面加上行號(hào)(默認(rèn) 5 位寬)。
4. 設(shè)置頁面大小
pr -l 50 -w 100 file.txt
每頁 50 行,每行最多 100 字符。
5. 多列輸出
pr -2 file.txt
將文件內(nèi)容分為兩列顯示。
pr -3 -s file.txt
三列輸出,列之間用空格分隔(-s 默認(rèn)用空格或制表符)。
6. 合并多個(gè)文件并列顯示
pr -m file1.txt file2.txt file3.txt
將多個(gè)文件并排打?。课募涣校?,適合對(duì)比內(nèi)容。
7. 自定義頁眉
pr -h "My Report" data.txt
頁眉顯示為 “My Report” 而不是文件名。
8. 從標(biāo)準(zhǔn)輸入讀取
cat file.txt | pr -t | less
將文件內(nèi)容通過管道傳給 pr,去掉頁眉后用 less 查看。
9. 雙倍行距
pr -d file.txt
每行之間增加一個(gè)空行,便于閱讀或批注。
四、實(shí)際應(yīng)用場景
- 打印代碼或日志:使用
pr -n添加行號(hào),方便引用。 - 對(duì)比文件:用
pr -m file1 file2并列顯示兩個(gè)文件。 - 生成報(bào)告:結(jié)合
-h和多列輸出,美化文本輸出。 - 預(yù)處理文本:在交給
lpr(打印命令)之前用pr格式化。
例如,打印帶行號(hào)的腳本:
pr -n -h "backup.sh" backup.sh | lpr
五、注意事項(xiàng)
pr默認(rèn)每頁 66 行(模仿傳統(tǒng)打印機(jī)的一頁),可通過-l修改。- 多列模式下,如果文本過長會(huì)被截?cái)?,注意使?
-w調(diào)整寬度。 pr不會(huì)修改原始文件,只是格式化輸出。
六、總結(jié)
pr 是一個(gè)輕量級(jí)但功能豐富的文本格式化工具,適合在終端中對(duì)文本進(jìn)行排版,尤其適用于打印準(zhǔn)備。雖然現(xiàn)代 GUI 打印更常見,但在服務(wù)器環(huán)境或腳本中,pr 依然有其價(jià)值。
?? 提示:結(jié)合 pr 與 lpr、less、grep 等命令,可以構(gòu)建強(qiáng)大的文本處理流水線。
如需查看完整幫助,運(yùn)行:
pr --help man pr
到此這篇關(guān)于SHELL中pr命令的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SHELL pr命令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Shell腳本實(shí)現(xiàn)上傳zip壓縮文件到FTP服務(wù)器
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)上傳zip壓縮文件到FTP服務(wù)器,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-12-12
linux?shell實(shí)現(xiàn)折線圖代碼實(shí)例
這篇文章主要給大家介紹了關(guān)于linux?shell實(shí)現(xiàn)折線圖的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用shell具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-12-12
shell for循環(huán)與數(shù)組應(yīng)用介紹
先舉一個(gè)例子,shell for循環(huán)讀取一個(gè)文件,把每一行賦值給一個(gè)數(shù)組的變量,然后介紹shell數(shù)組的相關(guān)知識(shí),有需要的朋友可以參考下2013-02-02
如何利用 tee 命令調(diào)試shell腳本中的管道
在編寫shell腳本時(shí),調(diào)試是個(gè)比較麻煩的事,特別是涉及到多層管道命令的時(shí)候,會(huì)產(chǎn)生多個(gè)中間結(jié)果,tee命令的作用是從標(biāo)準(zhǔn)輸入中讀取數(shù)據(jù)寫入標(biāo)準(zhǔn)輸出或文件中,利用它可以從管道中讀取中間結(jié)果并寫入本地臨時(shí)文件中,通過中間結(jié)果可以一步一步的定位到腳本的錯(cuò)誤2021-05-05
linux shell實(shí)現(xiàn)轉(zhuǎn)換輸入日期的格式
對(duì)于用戶輸入日期的合法性檢驗(yàn),是個(gè)很重要的問題,這個(gè)例子是簡單得取得用戶輸入的日期,并轉(zhuǎn)換為相應(yīng)的格式,但不完美,原因請(qǐng)看后文2016-08-08
Shell腳本實(shí)現(xiàn)分析apache日志中ip所在的地區(qū)
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)分析apache日志中ip所在的地區(qū),本文使用了一款nali工具實(shí)現(xiàn),需要的朋友可以參考下2014-12-12

