Grep

我誤解了關於 -o 的 grep 手冊(僅匹配)

  • March 14, 2022

grep手動報價:

-o, –only-matching

僅列印匹配行的匹配(非空)部分,每個這樣的部分在單獨的輸出行上。

matched (non-empty) parts of a matching line意味著非空行對嗎?

更新

如果評論被刪除,來自斯蒂芬的回答如下:

  • 釋義:“一行中的空字元串”而不是“匹配行的空部分”怎麼樣?– 拉合爾 10 小時前
  • 我認為重要的標籤是“匹配的部分”;“匹配的字元串”也可以,我不是問哪個更好的合適人選。——斯蒂芬·基特 59 分鐘前

它實際上是指匹配行的非空匹配部分,而不是非空行。結果輸出只包含非空行,每行都包含一個非空匹配。

grep -o每場比賽列印一行:

$ grep -Eo '.?' <<<"hello"
h
e
l
l
o

但它不輸出空匹配。許多正則表達式可以匹配空文本;例如:

$ grep -E '.?' <<<""

輸出一個空行,因為空行匹配。但是,添加-o結果根本沒有輸出:

$ grep -Eo '.?' <<<""

因為-o忽略空匹配。

指定-o忽略空匹配意味著實現者不需要決定如何處理零長度匹配,否則在許多情況下會產生相當長(且無用)的輸出。

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