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