Linux Shell輸出文字中的指定行

2021-08-17 08:40:05 字數 1783 閱讀 1011

在linux系統上如何快速檢視文字中指定行呢?有時文字較大比如有10w行,想要快速檢視第99行該怎麼做呢?

本文以檔名test.txt為例,介紹3種方式快速檢視test.txt的第99行。相信你可以輕易的舉一反三。

sed全名:stream editor,流編輯器,使用程式的方式來編輯文字,可以實現替換、刪除、新增、選取特定行等功能,是一種很hacker的方式。sed基本上使用正規表示式匹配,對正規表示式要求較高。

想要快速入門sed參考sed簡明教程,想要深入學習參考sed完整手冊。

sed語法格式:

sed [ -n ] [ -u ] script  [ file ... ]

sed [ -n ] [ -u ] [ -e script ] ... [ -f scriptfile ] ... [ file

... ]

關鍵options介紹:

sed使用示例

在指定行插入或追加: a, i

a. 在test.txt第一行前插入:sed 「1 i this is a test file」 test.txt

b. 在test.txt最後一行追加:sed 「$ a this is the end of file」 test.txt

刪除: d

a. 刪除test.txt第二行: sed 『2d』 test.txt

b. 刪除test.txt符合正規表示式/fish的行: sed 『/fish/d』 test.txt

修改文字:s

a. 將text.txt中love替換為like: sed 「s/love/like/g」 test.txt (/g表示全域性匹配)

列印文字: p

a. 輸出test.txt的第5-7行:sed -n 『5,7p』 test.txt (-n的作用就顯示出來了,可以去除-n檢視效果)

ps: 以上命令並不會真的修改掉test.txt的內容,如果想修改文字內容可以使用重定向,或者使用-i選項。

使用sed輸出test.txt的第99行?awk: 文字處理工具,可以在檔案中查詢與模式匹配的行並在這些行上執行指定的操作。awk比sed早誕生2-3年,作用與sed類似。快速入門awk可參考awk簡明教程。

awk語法格式

awk [ -u ] [ -f ere ] [ -v assignment ] ...  [ [ file ... | assignment ... ] ] ...
awk提供了一系列內建變數:

awk使用示例:

列印test.txt中第一列為this的行:awk '$1=="this"test.txt

列印表頭和test.txt中第一列為this的行:awk '$1=="this" || nr == 1' test.txt格式化輸出:awk '$1=="this" || nr==1 ' test.txt

使用awk輸出test.txt的第99行?

使用內建變數nr和fnr:

ps: awk列印完也不會立即退出,可以新增exit優化:awk 『nr==99 』 test.txt

head和tail故名思意,相對簡單,分別輸出檔案或流的開頭n行或結尾n行,就不在此詳細介紹了。直接給出解決方案:

tail -n+99 test.txt|head -1

很容易想到對稱的組合:head -99 test.txt|tail -1,但是當檔案不足99行時,輸出的是檔案最後一行的內容。

輸出文字2

static scrollinfo si 設定頁面大小和滾動框範圍 scrollinfo si.cbsize sizeof scrollinfo si.fmask sif range sif page si.nmin 0 si.nmax numlines 1 si.npage cyclient cy...

可輸出文字的ASSERT

windows原斷言巨集 assert exp 可中斷程式,不能顯示自定義訊息 assert exp 可中斷程式,不能顯示自定義訊息 asserte exp 可中斷程式,不能顯示自定義訊息,可顯示表示式exp 可輸出檔案的斷言巨集 if defined debug define asserte ms...

Python 控制終端輸出文字

class bcolors header 033 95m okblue 033 94m okgreen 033 92m warning 033 93m fail 033 91m endc 033 0m defdisable self self.header self.okblue self.okgr...