Grep
說服 grep 輸出所有行,而不僅僅是匹配的行
假設我有以下文件:
$ cat test test line 1 test line 2 line without the search word another line without it test line 3 with two test words test line 4
預設情況下,
grep
返回包含搜尋詞的每一行:$ grep test test test line 1 test line 2 test line 3 with two test words test line 4
--color
將參數傳遞給grep
將使其突出顯示與搜尋表達式匹配的行部分,但它仍然只返回包含表達式的行。有沒有辦法grep
輸出源文件中的每一行,但突出顯示匹配項?我目前實現這一點的可怕技巧(至少在沒有 10000+ 連續行且沒有匹配的文件上)是:
$ grep -B 9999 -A 9999 test test
如果
grep
不能做到這一點,是否有另一個提供相同功能的命令行工具?我已經擺弄了ack
,但它似乎也沒有選擇。
grep --color -E "test|$" yourfile
我們在這裡所做的是匹配
$
模式和測試模式,顯然$
沒有任何要著色的東西,所以只有測試模式有顏色。-E
只是打開擴展的正則表達式匹配。您可以像這樣輕鬆地從中創建一個函式:
highlight () { grep --color -E "$1|$" "${@:1}" ; }
ack --passthru --color string file
對於 Ubuntu 和 Debian,使用 ack-grep 而不是 ack
ack-grep --passthru --color string file