![如何在文字檔中搜尋特定整數](https://rvso.com/image/89165/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%96%87%E5%AD%97%E6%AA%94%E4%B8%AD%E6%90%9C%E5%B0%8B%E7%89%B9%E5%AE%9A%E6%95%B4%E6%95%B8.png)
有沒有一種簡單的方法可以在文字檔案(原始碼)中搜尋特定整數的所有實例。這不應在恰好包含整數作為子字串的較大數字上觸發,但它不能簡單地排除此類行,因為它們可能包含這兩種情況:
正在搜尋“6”...
int a=6; // found
int b=16; // not found (despite the '6' in '16')
int c=6, d=16; // found
我真的在尋找一種命令列方法,但我也很好奇是否有自由軟體GUI 類型的編輯器就可以做到這一點。
答案1
grep -E '\b6\b'
\b
是一個“詞邊界”
-w
編輯:在將@nobar指向正確的方向後,他在手冊頁中找到/指出了快捷方式選項(word-regexp),這將上面的內容簡化為:
grep -w 6
如果經常使用,您可以使用類似的功能
wgrp(){ grep -w "$1" "$2"; }
注意(致@glenn-jackman):如果您不在"$2"
此處引用,則可以將該函數用作管道過濾器。但是,是的,它不適用於帶有空格的檔案名稱。
在閱讀了@Gilles 的另一個很好的答案後,我現在建議
igrp(){ grep -E "(^|[^0-9])$1($|[^0-9])" "$2"; }
答案2
您可以使用正規表示式搜尋特定整數。搜尋前面有資料開頭或非數字字元的數字,數字後面也一樣。
grep -e '^6$' -e '^6[^0-9]' -e '[^0-9]6$' -e '[^0-9]6[^0-9]' # BRE syntax
grep -E '(^|[^0-9])6($|[^0-9])' # ERE syntax
其他答案中建議的全字搜尋會錯過諸如 之類的點擊foo6bar
。 (這對您的用例來說可能不是問題,但這是您所要求的。)
任何半嚴肅的文字編輯器或檢視器(例如less
)都有正規表示式搜尋。檢查其文件以了解它使用的正規表示式語法。