Grep
我誤解了關於 -o 的 grep 手冊(僅匹配)
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
忽略空匹配意味著實現者不需要決定如何處理零長度匹配,否則在許多情況下會產生相當長(且無用)的輸出。