如何使用linux cat和tac命令

cat和tac命令顯示文字檔案的內容,但它們的內容遠不止這些。再深入一點,學習一些高效的Linux命令列技巧。...

cat和tac命令顯示文字檔案的內容,但它們的內容遠不止這些。再深入一點,學習一些高效的Linux命令列技巧。

這是兩個簡單的小命令,通常被認為過於簡單而沒有任何實際用途。但是,一旦您知道了使用它們的不同方法,您就會發現它們完全有能力在處理檔案時承擔起相應的重擔。

cat命令

cat用於檢查文字檔案的內容,並將部分檔案連線在一起形成一個更大的檔案。

在撥號調變解調器時代的某個時候,二進位制檔案常常被分解成幾個較小的檔案,以便於下載。你沒有下載一個大檔案,而是把每個小檔案都拉回來。如果某個檔案未能正確下載,您只需再次檢索該檔案。

當然,您還需要一種方法將較小檔案的集合重新組織回單個工作二進位制檔案中。這個過程被稱為連線。這就是貓的由來,也是它的名字來源。

寬頻和光纖連線導致了這種特殊需求的減弱,就像撥號上網發出的刺耳聲音一樣,那麼,如今cat還能做些什麼呢?實際上很多。

顯示文字檔案

要讓cat在終端視窗中列出文字檔案的內容,請使用以下命令。

確保該檔案是文字檔案。如果您試圖在終端視窗中列出二進位制檔案的內容,結果將是不可預測的。可能會導致終端會話被鎖定或更糟。

cat poem1.txt

如何使用linux cat和tac命令

檔案poem1.txt的內容顯示在終端視窗中。

如何使用linux cat和tac命令

那只是那首著名詩的一半。剩下的呢?這裡還有一個叫做poem2.txt的檔案。我們可以用一個命令讓cat列出多個檔案的內容。我們只需要在命令列中按順序列出檔案。

cat poem1.txt poem2.txt

如何使用linux cat和tac命令

看起來好多了,我們現在有整首詩了。

如何使用linux cat和tac命令

使用具有較少

這首詩全在那兒,但它飛過窗戶太快了,讀不懂開頭的幾節。我們可以將cat的輸出匯入less,然後按自己的速度向下滾動文字。

cat poem1.txt poem2.txt | less

如何使用linux cat和tac命令

我們現在可以在一個流中的文字中前後移動,即使它儲存在兩個單獨的文字檔案中。

如何使用linux cat和tac命令

為檔案中的行編號

我們可以對檔案中顯示的行進行cat編號。為此,我們使用-n(number)選項。

cat -n poem1.txt

如何使用linux cat和tac命令

行在終端視窗中顯示時進行編號。

如何使用linux cat和tac命令

不要給空行編號

我們設法讓貓編號,但是歌詞之間的空格也在數。要使文字行編號但忽略空白行,請使用-b(數字非空白)選項。

cat -b poem1.txt

如何使用linux cat和tac命令

現在文字行被編號,空白行被跳過。

如何使用linux cat和tac命令

不顯示多個空行

如果檔案中有連續的空行部分,我們可以要求cat忽略除一個空行以外的所有空行。看看這個檔案。

如何使用linux cat和tac命令

下一個命令將使cat在每一組空行中只顯示一個空行。我們需要實現這一點的選項是-s(擠壓空白)選項。

cat -s poem1.txt

如何使用linux cat和tac命令

這不會以任何方式影響檔案的內容;它只是更改cat顯示檔案的方式。

如何使用linux cat和tac命令

顯示選項卡

如果您想知道空格是由空格還是製表符引起的,可以使用-T(showtabs)選項來查詢。

cat -T poem1.txt

如何使用linux cat和tac命令

選項卡由字元“^I”表示。

如何使用linux cat和tac命令

顯示行尾

您可以使用-E(show ends)選項檢查尾隨空格。

cat -E poem1.txt

如何使用linux cat和tac命令

行尾由“$”字元表示。

如何使用linux cat和tac命令

連線檔案

把一首詩儲存在兩個檔案中,每個檔案中有一半是沒有意義的。讓我們把他們連在一起,把整首詩放在一個新的檔案裡。

cat poem1.txt poem2.txt > jabberwocky.txt

如何使用linux cat和tac命令

讓我們使用cat檢查新檔案:

cat jabberwocky.txt

如何使用linux cat和tac命令

我們的新檔案包含其他兩個檔案的內容。

如何使用linux cat和tac命令

將文字附加到現有檔案

那更好,但事實上,這不是整首詩。最後一節不見了。Jabberwocky的最後一節與第一節相同。

如果我們有一個檔案中的第一節,我們可以把它新增到檔案的底部jabberwocky.txt檔案檔案,我們就有完整的詩。

在下一個命令中,我們必須使用>,而不僅僅是>。如果使用單個>將覆蓋jabberwocky.txt檔案. 我們不想那樣做。我們想在它的底部新增文字。

cat first_verse.txt >> jabberwocky.txt

如何使用linux cat和tac命令

讓我們檢查一下這本書的內容jabberwocky.txt檔案檔案:

cat jabberwocky.txt

如何使用linux cat和tac命令

最後,這首詩的所有部分都在一起了。

如何使用linux cat和tac命令

重定向stdin

您可以使用cat將鍵盤輸入重定向到檔案中。您鍵入的所有內容都將重定向到檔案中,直到您按Ctrl+D。請注意,我們使用單個>,因為我們要建立該檔案(或覆蓋它,如果它存在的話)。

cat > my_poem.txt

如何使用linux cat和tac命令

我們一發出命令就可以開始打字了。完成後按Ctrl+D。然後,我們可以透過以下方式檢查新檔案的內容:

cat my-poem.txt

如何使用linux cat和tac命令

聽起來像是一個遙遠的渦輪可能是劉易斯卡羅爾在他的墳墓裡高速旋轉。

戰術指揮部

tac與cat類似,但它以相反的順序列出檔案的內容。

讓我們看看:

tac my_poem.txt

如何使用linux cat和tac命令

檔案以相反的順序列在終端視窗中。在這種情況下,它對它的文學價值沒有影響。

如何使用linux cat和tac命令

將tac與標準輸入一起使用

使用沒有檔名的tac會導致它對鍵盤的輸入進行操作。按Ctrl+D將停止輸入階段,tac將以相反的順序列出您鍵入的內容。

tac

如何使用linux cat和tac命令

當按下Ctrl+D時,輸入將反轉並列在終端視窗中。

如何使用linux cat和tac命令

對日誌檔案使用tac

除了低階的客廳把戲,tac還能做什麼有用的事嗎?是的,可以。許多日誌檔案將其最新條目附加在檔案的底部。使用tac(與直覺相反,還有head),我們可以將最後一個條目彈出到終端視窗中。

我們使用tac反向列出syslog檔案,並將其匯入head。透過告訴head只打印它接收到的第一行(由於tac是檔案中的最後一行),我們可以看到syslog檔案中的最新條目。

tac /var/log/syslog | head -1

如何使用linux cat和tac命令

head列印syslog檔案中的最新條目,然後退出。

注意,頭部只打印一行,因為我們的要求,但行是如此之長,它繞了兩圈。這就是為什麼它看起來像終端視窗中的三行輸出。

如何使用linux cat和tac命令

對文字記錄使用tac

tac的最後一個招數是一個美人。

通常,tac對文字檔案的操作方式是從下到上逐行遍歷它們。行是以換行符結尾的字元序列。但我們可以告訴tac使用其他分隔符。這允許我們將文字檔案中的“塊”資料視為資料記錄。

假設我們有一個需要檢查或分析的程式日誌檔案。讓我們看一下它的格式。

less logfile.dat

如何使用linux cat和tac命令

如我們所見,檔案有一個重複的格式。有三行十六進位制值的序列。每組三行十六進位制都有一個標籤行,以“=SEQ”開頭,後跟一個數字序列。

如何使用linux cat和tac命令

如果我們滾動到檔案的底部,我們可以看到有很多這樣的記錄。最後一個號碼是865。

如何使用linux cat和tac命令

讓我們假設,無論出於什麼原因,我們都需要以相反的順序處理這個檔案,一個數據記錄一個數據記錄。必須保留每個資料記錄中三個十六進位制行的行順序。

我們要注意的是,檔案中的最後三行以十六進位制值93、E7和B8開始,按順序排列。

讓我們用tac反轉檔案。這是一個很長的檔案,所以我們將用管道把它壓縮成更少的檔案。

tac logfile.dat | less

如何使用linux cat和tac命令

這會反轉檔案,但不是我們想要的結果。我們希望反轉檔案,但每個資料記錄中的行必須按其原始順序。

如何使用linux cat和tac命令

我們之前記錄過,檔案中的最後三行以十六進位制值93、E7和B8開始,按順序排列。這些行的順序顛倒了。另外,“=SEQ”行現在位於每組三個十六進位制行的下方。

塔克去營救。

tac -b -r -s ^=SEQ.+[0-9]+*$ logfile.dat | less

如何使用linux cat和tac命令

我們把它分解一下。

-s(分隔符)選項通知tac我們要在記錄之間使用什麼作為分隔符。它告訴tac不要使用通常的換行符,而是使用分隔符。

r(regex)選項告訴tac將分隔符字串視為正則表示式。

-b(before)選項使tac將分隔符列在每條記錄之前而不是之後(這是預設分隔符換行符的通常位置)。

-s(分隔符)字串^=SEQ.+[0-9]+*$被破譯如下:

^字元表示行的開始。後跟=序號+[0-9]+*$。這指示tac在行首查詢“=SEQ.”的每一次出現,後跟任意數字序列(由[0-9]表示),後跟任意其他字符集(由*$表示)。

像往常一樣,我們把所有的東西都用管道輸送到更少的地方。

如何使用linux cat和tac命令

我們的檔案現在以相反的順序顯示,每個“=SEQ”標籤行列在它的三行十六進位制資料之前。三行十六進位制值在每個資料記錄中按其原始順序排列。

我們可以簡單地檢查一下。十六進位制的前三行的第一個值(即檔案反轉前的最後三行)與我們之前記錄的值相匹配:93、E7和B8。

這是一個相當的技巧為終端視窗一行。

一切都有目的

在Linux世界中,即使是看似最簡單的命令和實用程式也可能具有令人驚訝和強大的屬性。

簡單實用程式的設計理念可以很好地完成一件事,並且可以很容易地與其他實用程式互動,這就產生了一些奇怪的小命令,比如tac。乍一看,似乎有點怪。但是,當你窺視表面之下,有一種意想不到的力量,你可以利用你的優勢。

或者,正如另一種哲學所說,“不要因為蛇沒有角而輕視它,因為誰能說它不會變成龍呢?”?”

  • 發表於 2021-04-03 11:26
  • 閱讀 ( 57 )
  • 分類:網際網路

你可能感興趣的文章

如何將命令列輸出儲存到windows、mac和linux上的檔案

... 今天我們將介紹如何在Windows、Mac和Linux上將命令的輸出傳送到bashshell中的文字檔案。 ...

  • 發佈於 2021-03-12 15:56
  • 閲讀 ( 45 )

raspberry pi終端命令:raspberry pi使用者快速指南

... 我們不希望您在不知道命令列如何工作的情況下就開始使用它。本質上,它是一種指示計算機執行任務的方法,但沒有滑鼠。 ...

  • 發佈於 2021-03-18 12:27
  • 閲讀 ( 54 )

10種檢查執行哪個linux版本的方法

... 如何檢查linux發行版和核心版本 ...

  • 發佈於 2021-03-19 19:21
  • 閲讀 ( 51 )

如何在linux上使用groupadd管理使用者組

... 相關:如何在Linux中更改密碼 ...

  • 發佈於 2021-03-26 17:15
  • 閲讀 ( 41 )

啟動linux的9個基本命令

... 如何在linux下開啟終端 ...

  • 發佈於 2021-03-26 18:33
  • 閲讀 ( 58 )

如何在linux中建立新檔案

Linux中有幾種不同的應用程式和命令可以為您建立新檔案,即使不啟動應用程式。使用哪種方法取決於檔案的用途。讓我們看看這些選項,這樣您就可以知道哪一個對您最有用。 ...

  • 發佈於 2021-03-28 22:06
  • 閲讀 ( 56 )

如何檢查linux核心和作業系統版本

...版本可以讓您對安全更新做出重要決定。我們將向您展示如何找到這些,無論您使用哪個發行版。 滾動和點釋放 你知道你在執行哪個版本的Linux嗎?你能找到核心版本嗎?Linux的滾動發行版,如Arch、Manjaro和openSUSE,經常使用自...

  • 發佈於 2021-04-01 13:11
  • 閲讀 ( 51 )

如何使用tesseract從linux命令列執行ocr

...取文字。它快速、準確,可以使用大約100種語言。下面是如何使用它。 光學字元識別 光學字元識別(OCR)是一種在影象中觀察和查詢單詞,然後將其提取為可編輯文字的能力。對於人類來說,這項簡單的任務對於計算機來說...

  • 發佈於 2021-04-01 21:39
  • 閲讀 ( 48 )

如何使用chsh在linux上更改預設shell

Bash不是唯一的Linux shell。很容易嘗試其他的shell,比如非常流行的Zsh。找到一個您喜歡的shell後,使用chsh命令將其設定為預設shell。我們會教你怎麼做。 為什麼貝殼很重要 shell位於您和作業系統之間。它在終端視窗內提供環境...

  • 發佈於 2021-04-02 06:04
  • 閲讀 ( 64 )

如何在linux上使用sed命令

...命令列使用它來操作檔案和流中的文字。我們將向你展示如何利用它的力量。 sed的力量 sed命令有點像國際象棋:學習基礎知識需要一個小時,掌握它們需要一輩子(或者,至少需要大量的練習)。我們將向您展示sed功能的每...

  • 發佈於 2021-04-02 08:03
  • 閲讀 ( 44 )
qjjg80772
qjjg80772

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦