如何在文字檔中搜尋特定整數

如何在文字檔中搜尋特定整數

有沒有一種簡單的方法可以在文字檔案(原始碼)中搜尋特定整數的所有實例。這不應在恰好包含整數作為子字串的較大數字上觸發,但它不能簡單地排除此類行,因為它們可能包含這兩種情況:

正在搜尋“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)都有正規表示式搜尋。檢查其文件以了解它使用的正規表示式語法。

答案3

我想這並不是一個隱晦的需求。我的常規程式編輯器,普馬透過「尋找」對話方塊使用「僅匹配整個單字」選項支援此操作。我確信許多其他編輯也有這個——儘管目前,顯然不是 pluma 的祖先,編輯器

在此輸入影像描述

相關內容