Awk

在文件中查找文本字元串並僅輸出其後面的其余文本?

  • August 7, 2019

我在這個論壇上發現了很多與在文本文件中查找各種值並輸出圍繞它的文本有關的文章。但是,我似乎沒有找到任何“面向流”。

我想在文件中找到一個特定的字元串,並輸出它後面的文本,直到到達文件末尾。換句話說,我想要一個類似於過濾器的東西,它會忽略文件中的文本,直到達到特定的字元串值,然後從那一刻起將文本輸出到標準輸出,直到文件結束。我想使用標準輸出,所以如果我願意,我可以將輸出通過管道傳輸到文件中。

是否有一個 Linux 文本實用程序可以幫助我做到這一點,如果有,怎麼做?或者,如果我需要編寫一個 bash shell 腳本來完成此操作,我將使用哪些一般步驟和命令行實用程序來執行此操作?

例如,給定下面的範例文件:

one
two
three
four
five

假設我想輸出“三”之後的所有文本,結果將是:

four
five

注意:我確實找到了這個看似相關的文章,但你可以看到它有點亂:

如何查找文本並在之後復製文本?

使用awk

awk 's;/^three$/{s=1}' file

或者

awk 's;$0=="three"{s=1}' file
  • s;如果變數s為真,將列印該行,這是在找到模式/單詞後第一次出現的情況……
  • /^three$/{s=1}``s如果找到模式/單詞,則將變數設置為 true (1)。

使用 GNU sed

sed 0,/three/d

請注意,Linux 是一個核心,它沒有實用程序。GNUsedsedGNU/Linux 系統(如 Debian GNU/Linux)上常見的實現。GNUsed早於 Linux,並且已被編譯為在大多數類 Unix 系統上執行,包括大多數以 Linux 作為核心的系統。它本身是70 年代後期 UNIX 實用程序的免費、自由和開源的重新實現(包括一些擴展,包括該0地址) 。sed

引用自:https://unix.stackexchange.com/questions/534164