テキストファイルから特定の整数を取得する方法

テキストファイルから特定の整数を取得する方法

特定の整数のすべてのインスタンスに対してテキストファイル(ソースコード)を取得する簡単な方法はありますか?これは、部分文字列として整数を含むより大きな数値に対してトリガーしてはいけませんが、両方を含めることができるため、そのような行を除外することはできません。

「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

私はこれが暗黙の要件ではないと思います。私の正規プログラミングエディタ、ピューマこれは、単語全体のみ一致オプションを使用する検索ダイアログボックスでサポートされます。私は他の多くの編集者もこれを持っていると確信しています。たとえ現在は明らかにプルマの先祖ではありませんが、編集者

ここに画像の説明を入力してください

関連情報