テキスト ファイル (ソース コード) で特定の整数のすべてのインスタンスを検索する簡単な方法はありますか。これは、整数を部分文字列として含む大きな数値ではトリガーされませんが、両方のケースが含まれる可能性があるため、そのような行を単純に除外することはできません。
「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
) には、正規表現による検索機能があります。どのような正規表現構文が使用されているかを確認するには、そのドキュメントを確認してください。