Command-Line
如何在沒有前導空格的情況下進行 grep?
我正在瀏覽一個大型程式碼庫,前導空格和製表符似乎很煩人。有沒有辦法擺脫它?
grep -R "something" ./
例如,而不是:
foo/bar.cpp: qwertyuiosomethingoi foo/bar/baz.h: 43rfsgsomethingdrfg bar/bar.cpp: 1234edwssomethingczd
我想得到類似的東西:
foo/bar.cpp: qwertyuiosomethingoi foo/bar/baz.h: 43rfsgdsomethingrfg bar/bar.cpp: 1234edwssomethingczd
或更好:
foo/bar.cpp: qwertyuisomethingooi foo/bar/baz.h: 43rfsgdrsomethingfg bar/bar.cpp: 1234edwssomethingczd
您可以使用消除它們
sed
grep blah filename.foo | sed -e 's/^[ \t]*//'
這將從輸出中刪除前導空格
假設您正在一個文件中尋找模式
re
(一種基本的正則表達式),並且您想從所有匹配行中去除前導空格:sed -n -e 's/^[[:blank:]]*//' -e '/re/p' thefile.c
(其實這個先去掉所有前導空格,然後再尋找模式,但是結果是一樣的)
改為對輸出進行後處理
grep
(如您編輯的問題中):grep -e 're' -- * | sed 's/:[[:blank:]]*/: /'
該模式
[[:blank:]]*
匹配零個或多個空格或製表符。如果您在 之後插入製表符而不是空格
:
,您還會獲得一些您要求的漂亮的均勻縮進。