[リードミー|ユーザーガイド |インデックス作成 |ベンチマーク | Q&A】
オプション -Q を使用すると、入力時にファイルを検索するためのクエリ TUI が開きます。
ugrep は高速でユーザーフレンドリーで、ユーザーが望んでいたたくさんの新機能を備えています
組み込みヘルプを備えた対話型 TUI、AND/OR/NOT パターンを使用した Google のような検索、あいまい検索、(ネストされた) zip/7z/tar/pax/cpio アーカイブ、tarball および圧縮ファイル gz/Z/bz/ の検索が含まれます。 bz2/lzma/xz/lz4/zstd/brotli、バイナリ ファイルの検索と hexdump、PDF、doc、docx などのドキュメントの検索、および出力JSON、XML、CSV、または独自にカスタマイズした形式
特別なコマンドライン オプションを必要としない、複数行のパターン マッチングを備えた Unicode 拡張正規表現パターン構文
低速でコールドなファイル システムの検索を高速化するファイル インデクサーが含まれています
GNU grep の真のドロップイン代替品 (実際には互換性のないコマンドラインを実装している場合に「 ug
代替手段」または「代替手段」であると主張する他の一般的な grep とは異なります (ug をgrep
、 egrep
、およびfgrep
にコピーまたはシンボリックリンクすることを前提としています)オプションを使用し、互換性のない正規表現マッチャーを使用します。つまり、ugrep がサポートする場合は Perl 正規表現のみと POSIX BRE (grep) および ERE (egrep) を使用します。すべての正規表現モード
ベンチマークは、ugrep が高性能 DFA ベースの正規表現マッチャー RE/flex を使用した最速の grep (の 1 つ) であることを示しています。
何かを改善したり、ugrep に追加したりする必要がある場合は、私に知らせてください。
最優先事項は、ugrep にバグがなく信頼性があることを継続的に確認するための品質保証です。
ugrep の実行をさらに高速化します。たとえば #432、#421 を参照してください。
再現可能なパフォーマンス結果を共有する
ug
対話型で使用するためのもので、作業ディレクトリまたはホーム ディレクトリにあるオプションの .ugrep 設定ファイルをロードします。ug ug+
PDF、ドキュメント、電子書籍、画像メタデータも検索します。
ugrep
、.ugrep 設定ファイルを使用せずに GNU grep のようにバッチで使用します。ugrep ugrep+
PDF、ドキュメント、電子書籍、画像メタデータも検索します
デフォルトで Unicode パターンに一致し、UTF-8、UTF-16、および UTF-32 でエンコードされたファイルを自動的に検索します
正規表現パターン内のn
またはR
含む複数の行と一致します。これを行うために特別なオプションは必要ありません。
組み込みヘルプ: ug --help
、 ug --help WHAT
探しているWHAT
に関連するオプションを表示します。
ug --help regex
、 ug --help globs
、 ug --help fuzzy
、 ug --help format
。
対話型での使用を目的としたug
コマンドで使用されるカスタマイズ可能な構成ファイルにより、ユーザーフレンドリーであり、好みの .ugrep 構成ファイルをロードします。
ug PATTERN ... ugrep --config PATTERN ...
ug --save-config ...options-you-want-to-save...
作業ディレクトリに .ugrep 設定ファイルを保存します。これにより、次回そこでug
実行するときにこれらのオプションが使用されます。これをホーム ディレクトリで実行して、通常使用するオプションを含む .ugrep 構成ファイルを保存します。
対話型クエリ TUI。F1 または CTRL-Z を押してヘルプを表示し、TAB/SHIFT-TAB を押してディレクトリおよびファイルに移動します
ug -Q ug -Q -e PATTERN
-Q
コマンド ラインのPATTERN
を置き換え、TUI で対話的にパターンを入力できるようにします。 TUI では、ALT + 文字キーを使用して短い「文字オプション」のオン/オフを切り替えます。たとえば、ALT-n (オプション-n
) で行番号の表示/非表示を切り替えます。
アーカイブ (zip、tar、pax、jar、cpio、7z) および圧縮ファイル (gz、Z、bz、bz2、lzma、xz、lz4、zstd、brotli) のコンテンツを検索します。
ug -z PATTERN ... ug -z --zmax=2 PATTERN ...
-z --zmax=2
を指定すると、圧縮ファイルおよびアーカイブ内にネストされたアーカイブが検索されます。 --zmax
引数の範囲は 1 (デフォルト) から 99 までで、ネストされたアーカイブを検索するための最大 99 の解凍およびアーカイブ解除ステップが可能です。
AND
(またはスペースのみ)、 OR
(またはバー|
)、 NOT
(またはダッシュ-
) を使用した-%
パターンを使用し、引用符を使用して正確に一致させ、 ( )
でグループ化して、Google のようなブール クエリ パターンで検索します (下の左側);または、オプション-e
(「or」として)、 --and
、 --andnot
、および--not
正規表現パターンを使用します (以下の右側に示されています)。
ug -% 'A B C' ... ug -e 'A' --and 'B' --and 'C' ...
ug -% 'A|B C' ... ug -e 'A' -e 'B' --and 'C' ...
ug -% 'A -B -C' ... ug -e 'A' --andnot 'B' --andnot 'C' ...
ug -% 'A -(B|C)'... ug -e 'A' --andnot 'B' --andnot 'C' ...
ug -% '"abc" "def"' ... ug -e 'QabcE' --and 'QdefE' ...
ここで、 A
、 B
、およびC
任意の正規表現パターンです (文字列を検索するにはオプション-F
を使用します)
オプション-%%
( --bool --files
) を指定して、ファイル全体にブール クエリを適用します。ファイル全体のパターンの一致によってすべてのブール条件が満たされる場合、ファイルは一致します。それ以外の場合、grep ユーティリティは一般に行ベースのパターン マッチャーであるため、デフォルトでブール条件が単一行に適用されます。オプション--stats
検索の完了後にクエリを人間が判読できる形式で表示します。
ファイル名拡張子に関連付けられたフィルターを使用して、 ug+
で PDF、doc、docx、電子書籍などを検索します。
ug+ PATTERN ...
または、フィルター ユーティリティを使用するには、ファイル タイプを指定して--filter
指定します。
ug --filter='pdf:pdftotext % -' PATTERN ...
ug --filter='doc:antiword %' PATTERN ...
ug --filter='odt,docx,epub,rtf:pandoc --wrap=preserve -t plain % -o -' PATTERN ...
ug --filter='odt,doc,docx,rtf,xls,xlsx,ppt,pptx:soffice --headless --cat %' PATTERN ...
ug --filter='pem:openssl x509 -text,cer,crt,der:openssl x509 -text -inform der' PATTERN ...
ug --filter='latin1:iconv -f LATIN1 -t UTF-8' PATTERN ...
ug+
コマンドはug
コマンドと同じですが、フィルタを使用して PDF、ドキュメント、画像メタデータを検索します。
オプション-o
( --only-matching
) とコンテキスト オプション-ABC
を使用して水平コンテキストを表示します。たとえば、JavaScript や JSON ソースなどの非常に長い行で一致を検索します。
ug -o -C20 -nk PATTERN longlines.js
-o -C20
、一致の前 20 文字と一致後の 20 文字のコンテキストを持つすべての一致 (つまり、合計 40 Unicode 文字) に適合します。 -nk
、行番号と列番号を出力します。
指定されたレーベンシュタイン距離内で、あいまい検索を使用して近似パターンの一致を検索します。
ug -Z PATTERN ... ug -Z3 PATTTERN ...
-Zn
最大n
の追加文字、欠落文字、または置換文字に一致します。 -Z+n
最大n
個の追加文字に一致します。 -Zn
最大n
の欠落文字に一致し、 -Z~n
最大n
の置換文字に一致します。 -Z
デフォルトは-Z1
です。
正規表現による Fzf のような検索 (または-F
による固定文字列)、 -Z+4
による最大 4 つの追加文字とのあいまい一致、 -w
による単語のみ、ファイル全体のブール検索には-%%
使用
ug -Q -%% -l -w -Z+4 --sort=best
-l
TUI 内の一致するファイルをリストします。Tab TAB
を押してからALT-y
押してファイルを表示します。SHIFT SHIFT-TAB
とAlt-l
を押して戻ると、最も一致する順に並べられた一致ファイルのリストが表示されます。
バイナリ ファイルを検索し、バイナリ パターンに一致する 16 進ダンプを表示します (Unicode テキストまたはバイト パターンの場合は-U
)。
ug --hexdump -U BYTEPATTERN ... ug --hexdump TEXTPATTERN ...
ug -X -U BYTEPATTERN ... ug -X TEXTPATTERN ...
ug -W -U BYTEPATTERN ... ug -W TEXTPATTERN ...
--hexdump=4chC1
文字列c
、16 進間隔h
なしで、一致の前後に 1 つの追加の 16 進行C1
を付けずに4
列の 16 進数を表示します。
ファイル タイプまたはファイル「マジック バイト」で検索するファイルを含めるか、 ^
で除外します。
ug -t TYPE PATTERN ... ug -t ^TYPE PATTERN ...
ug -M 'MAGIC' PATTERN ... ug -M '^MAGIC' PATTERN ...
gitignore スタイルのグロブに一致するファイルとディレクトリを検索対象に含めるか、 ^
で除外します。
ug -g 'FILEGLOB' PATTERN ... ug -g '^FILEGLOB' PATTERN ...
ug -g 'DIRGLOB/' PATTERN ... ug -g '^DIRGLOB/' PATTERN ...
ug -g 'PATH/FILEGLOB' PATTERN ... ug -g '^PATH/FILEGLOB' PATTERN ...
ug -g 'PATH/DIRGLOB/' PATTERN ... ug -g '^PATH/DIRGLOB/' PATTERN ...
ファイル名拡張子 (サフィックス) で検索するファイルを含めるか、 -g"*.EXT"
の短縮形である^
を使用してファイルを除外します。
ug -O EXT PATTERN ... ug -O ^EXT PATTERN ...
検索対象の隠しファイル (ドットファイル) とディレクトリを含めます (デフォルトでは省略されています)
ug -. PATTERN ... ug -g'.*,.*/' PATTERN ...
常にug
で隠しファイルを検索するには、 .ugrep でhidden
指定します。
.gitignore などで指定されたファイルを除外します。
ug --ignore-files PATTERN ... ug --ignore-files=.ignore PATTERN ...
.ugrep でignore-files
指定すると、常にug
で無視されます。必要に応じて、 ignore-files=...
を追加します。
否定的なパターン (「これには一致するが、あれには一致しない」) を除く検索パターン
ug -e PATTERN -N NOTPATTERN ... ug -e '[0-9]+' -N 123 ...
事前定義された正規表現パターンを使用して、ソース コード、JavaScript、XML、JSON、HTML、PHP、マークダウンなどを検索します。
ug PATTERN -f c++/zap_comments -f c++/zap_strings ...
ug PATTERN -f php/zap_html ...
ug -f js/functions ... | ug PATTERN ...
一致するファイルを名前、最適一致、サイズ、時間で並べ替えます
ug --sort PATTERN ... ug --sort=size PATTERN ...
ug --sort=changed PATTERN ... ug --sort=created PATTERN ...
ug -Z --sort=best PATTERN ... ug --no-sort PATTERN ...
CSV、JSON、XML、およびユーザー指定の形式で結果を出力します
ug --csv PATTERN ... ug --json PATTERN ...
ug --xml PATTERN ... ug --format='file=%f line=%n match=%O%~' PATTERN ...
ug --help format
カスタマイズされた出力のフォーマット%
フィールドに関するヘルプを表示します。
PCRE の Perl 互換の正規表現パターンで検索し、サブパターンの一致を表示または置換します
ug -P PATTERN ... ug -P --format='%1 and %2%~' 'PATTERN(SUB1)(SUB2)' ...
出力内のパターンを -P および --replace 置換テキストで置き換えます。オプションで%
書式設定フィールドを含み、 -y
使用してファイルの残りの部分を渡します。
ug --replace='TEXT' PATTERN ... ug -y --replace='TEXT' PATTERN ...
ug --replace='(%m:%o)' PATTERN ... ug -y --replace='(%m:%o)' PATTERN ...
ug -P --replace='%1' PATTERN ... ug -y -P --replace='%1' PATTERN ...
ug --help format
--replace
でオプションで使用する format %
フィールドに関するヘルプを表示します。
ISO-8859-1 ~ 16、CP 437、CP 850、MACROMAN、KOI8 などの特定のエンコード形式のファイルを検索します。
ug --encoding=LATIN1 PATTERN ...
Homebrew を使用して最新の ugrep をインストールします。
$ brew install ugrep
または MacPorts を使用してインストールします。
$ sudo port install ugrep
これにより、 ugrep
およびug
コマンドがインストールされます。ug ug
ugrep
と同じですが、作業ディレクトリまたはホーム ディレクトリに存在する場合は構成ファイル .ugrep もロードされます。
Winget でインストールwinget install Genivia.ugrep
または Chocolatey choco install ugrep
でインストールします
または、Scoop scoop install ugrep
でインストールします
または、フル機能のugrep.exe
実行可能ファイルをリリース アーティファクトとして https://github.com/Genivia/ugrep/releases からダウンロードします。 zip 形式のリリースには、メインのugrep.exe
バイナリとug.exe
含まれています。 ug
コマンドは対話型での使用を目的としており、 .ugrep
構成ファイル (作業ディレクトリまたはホーム ディレクトリに存在する場合) から設定をロードして読み取ります。
ugrep.exe
とug.exe
を実行パスに追加します。 [設定]に移動し、 [設定の検索]で「パス」を検索します。 [環境変数] -> [パス] -> [新規]を選択し、 ugrep.exe
およびug.exe
実行可能ファイルを配置したディレクトリを追加します。
ヒント
Windows コマンド ラインでugrep.exe
およびug.exe
使用する場合の実用的なヒント:
'
引用符を使用せず、代わりに"
を使用してください。ほとんどの Windows コマンド ユーティリティでは、一'
引用符がコマンド ライン引数の一部であるとみなされます。GLOB
コマンド ライン引数の代わりにオプション-g/GLOB
を使用して指定するのが最適です。""
を指定すると、これは Powershell などの一部の Windows コマンド インタープリターによって無視される場合があります。その場合は、代わりにオプション--match
を指定する必要があります。n
代わりにR
使用して、 rn
ペアや単一のr
とn
などの Unicode 改行と一致させたい場合があります。 $ apk add ugrep ugrep-doc
バージョン情報については、https://pkgs.alpinelinux.org/packages?name=ugrep を確認してください。
$ pacman -S ugrep
バージョン情報については、https://archlinux.org/packages/extra/x86_64/ugrep を確認してください。
まず EPEL リポジトリを有効にしてから、ugrep をインストールします。
$ dnf install ugrep
バージョン情報については、https://packages.fedoraproject.org/pkgs/ugrep/ugrep/ を確認してください。
$ apt-get install ugrep
バージョン情報については、https://packages.debian.org/ugrep を確認してください。 ugrep
ローカルでビルドして試すには、以下の「すべてのプラットフォーム」のビルド手順を参照してください。
$ dnf install ugrep
バージョン情報については、https://packages.fedoraproject.org/pkgs/ugrep/ugrep/ を確認してください。
$ pkg install ugrep
バージョン情報については、https://www.freshports.org/textproc/ugrep を確認してください。
$ pkgman install cmd:ugrep
バージョン情報については、https://github.com/haikuports/haikuports/tree/master/app-text/ugrep を確認してください。 ugrep
ローカルでビルドして試すには、以下の「すべてのプラットフォーム」のビルド手順を参照してください。
標準の NetBSD パッケージ インストーラー (pkgsrc) を使用できます: http://cdn.netbsd.org/pub/pkgsrc/current/pkgsrc/textproc/ugrep/README.html
$ pkg_add ugrep
バージョン情報については、https://openports.pl/path/sysutils/ugrep を確認してください。
$ zypper install ugrep
バージョン情報については、https://build.opensuse.org/package/show/utilities/ugrep を確認してください。
まず EPEL リポジトリを有効にしてから、ugrep をインストールします。
$ dnf install ugrep
バージョン情報については、https://packages.fedoraproject.org/pkgs/ugrep/ugrep/ を確認してください。
ugrep
のクローンを作成します
$ git clone https://github.com/Genivia/ugrep
または、https://github.com/Genivia/ugrep/releases にアクセスして、特定のリリースをダウンロードします。
これらの機能が必要になった場合は、後でいつでも追加できます。
オプション-P
(Perl 正規表現) には、PCRE2 ライブラリ (推奨) または Boost.Regex ライブラリ (オプションのフォールバック) が必要です。 PCRE2 がインストールされていない場合は、 sudo apt-get install -y libpcre2-dev
などで PCRE2 をインストールするか、PCRE2 をダウンロードしてインストール手順に従います。あるいは、Boost.Regex をダウンロードし、 ./bootstrap.sh
およびsudo ./b2 --with-regex install
を実行します。 「Boost: はじめに」を参照してください。
オプション-z
(圧縮ファイルとアーカイブの検索) を使用するには、zlib ライブラリがインストールされている必要があります。ほとんどのシステムにインストールされています。そうでない場合は、たとえばsudo apt-get install -y libz-dev
を使用してインストールします。 .bz
および.bz2
ファイルを検索するには、たとえばsudo apt-get install -y libbz2-dev
を使用して、bzip2 ライブラリ (推奨) をインストールします。 .lzma
および.xz
ファイルを検索するには、たとえばsudo apt-get install -y liblzma-dev
を使用して、lzma ライブラリ (推奨) をインストールします。 .lz4
ファイルを検索するには、たとえばsudo apt-get install -y liblz4-dev
を使用して、lz4 ライブラリ (オプション、必須ではありません) をインストールします。 .zst
ファイルを検索するには、 sudo apt-get install -y libzstd-dev
などを使用して、zstd ライブラリ (オプション、必須ではありません) をインストールします。 .br
ファイルを検索するには、 sudo apt-get install -y libbrotli-dev
などを使用して、brotli ライブラリ (オプション、必須ではありません) をインストールします。 .bz3
ファイルを検索するには、たとえばsudo apt-get install -y bzip3
を使用して、bzip3 ライブラリ (オプション、必須ではありません) をインストールします。
ヒント
システムにbzip2
などのコマンド ライン ユーティリティがある場合でも、必ずしもlibbz2
などの開発ライブラリがインストールされていることを意味するわけではありません。開発ライブラリをインストールする必要があります。
一部の Linux システムは、 /usr/local/lib
から動的ライブラリをロードするように構成されていない場合があり、 ugrep
の実行時にライブラリ ロード エラーが発生します。これを修正するには、 export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib"
~/.bashrc
ファイルに追加します。または、 sudo ldconfig /usr/local/lib
を実行します。
./build.sh
スクリプトを実行してugrep
ビルドします。
$ cd ugrep
$ ./build.sh
これにより、 ./configure
とmake -j
を使用してugrep/src
ディレクトリにugrep
実行可能ファイルがビルドされ、 make test
で検証されます。すべてのテストに合格すると、 ugrep
実行可能ファイルがugrep/bin/ugrep
にコピーされ、シンボリックリンクugrep/bin/ug -> ugrep/bin/ugrep
がug
コマンドに追加されます。
ug
ugrep
と同じですが、作業ディレクトリまたはホーム ディレクトリに存在する場合、設定ファイル .ugrep もロードすることに注意してください。これは、.ugrep でug
のデフォルト オプションを定義できることを意味します。
インストールされたライブラリまたはローカル ライブラリへの代替パスは、 ./build.sh
で指定できます。利用可能なビルド オプションに関するヘルプを表示するには:
$ ./build.sh --help
以下を指定して静的実行可能ファイルをビルドできます。
$ ./build.sh --enable-static
brotli など、ライブラリが静的にリンクされていない場合、これは失敗する可能性があります。その場合は、 ./build.sh --enable-static --without-brotli
を試してください。
ポケベルなど、カスタマイズされたデフォルトを有効にしてugrep
構築できます。
$ ./build.sh --enable-pager
ビルドのデフォルトを選択するオプションには次のものがあります。
--help
ビルド オプションを表示します--enable-static
可能であれば、静的実行可能ファイルをビルドします--enable-hidden
常に隠しファイルとディレクトリを検索します--enable-pager
常にページャーを使用して端末に出力を表示します--enable-pretty
端末への出力を色付けし、ファイル名の見出しを追加します--disable-auto-color
自動カラーを無効にします。色を表示するには、ugrep オプション--color=auto
が必要です--disable-mmap
メモリマップされたファイルを無効にする--disable-sse2
SSE2 と AVX の最適化を無効にします--disable-avx2
AVX2 および AVX512BW の最適化を無効にしますが、サポートされている場合は SSE2 でコンパイルします。--disable-neon
ARM NEON/AArch64 の最適化を無効にします--with-grep-path
GREP_PATH
が定義されていない場合のデフォルトの-f
パス--with-grep-colors
GREP_COLORS
が定義されていない場合のデフォルトの色ビルドが完了したら、 ugrep/bin/ugrep
とugrep/bin/ug
を、 ~/bin
ディレクトリなどの便利な場所にコピーします。または、 ugrep
およびug
コマンドとマニュアル ページをインストールする場合は、次のようにします。
$ sudo make install
これにより、オプション-f
の事前定義されたパターンを含むパターン ファイルも/usr/local/share/ugrep/patterns/
にインストールされます。オプション-f
、まず作業ディレクトリでパターン ファイルの存在を確認し、見つからない場合は環境変数GREP_PATH
確認してパターン ファイルをロードし、見つからない場合はインストールされている事前定義パターン ファイルを読み取ります。
残念ながら、git クローンはタイムスタンプを保持しないため、「警告: システムに 'aclocal-1.15' がありません。」というメッセージが表示される可能性があります。または、 make
実行時に自動ヘッダーが見つからなかった。
この問題を回避するには、次を実行します。
$ autoreconf -fi
$ ./build.sh
GCC 8 以降では、 「注: 引数にパラメータを渡す ... GCC 7.1 で変更されました」のような警告が生成される場合があります。これらの警告は無視してください。
Ubuntu コンテナーでugrep
構築するための Dockerfile が含まれています。
開発者は、たとえば ThreadSanitizer でデータ競合を検出するなど、重要な変更を行うときにサニタイザーを使用してugrepコードを検証することをお勧めします。
$ ./build.sh CXXFLAGS='-fsanitize=thread -O1 -g'
私たちは、clang AddressSanitizer、MemorySanitizer、ThreadSanitizer、および UnknownBehaviorSanitizer を使用してugrep
チェックしました。これらのオプションは実行時に重大なオーバーヘッドを引き起こすため、最終ビルドには使用しないでください。
?目次に戻る
ugrepおよびugコマンドはデフォルトでバイナリ ファイルを検索し、.gitignore で指定されたファイルを無視しないことに注意してください。これにより、オプション-I
および--ignore-files
が使用されない限り、再帰的検索パフォーマンスの比較は意味を持ちません。これらのオプションをugのデフォルトにするには、単にignore-binary
とignore-files
.ugrep設定ファイルに追加します。
最新の ugrep の最新のパフォーマンス比較については、ugrep パフォーマンス ベンチマークを参照してください。 Ugrep は、GNU grep、Silver Searcher、ack、sift よりも高速です。 Ugrep の速度は、ほとんどのベンチマークで ripgrep を上回ります。
まず、ファイルを再帰的に検索するために Vim で:grep
コマンドを定義しましょう。これを行うには、ルート ディレクトリにある.vimrc
に次の行を追加します。
if executable('ugrep')
set grepprg=ugrep -RInk -j -u --tabs=1 --ignore-files
set grepformat=%f:%l:%c:%m,%f+%l+%c+%m,%-G%f\|%l\|%c\|%m
endif
これは、Vim :grep
コマンドで-j
大文字と小文字を区別しない検索を指定します。大文字と小文字を区別して検索するには、 grepprg
から -j
削除します。同じ行にある複数の一致は、クイックフィックス ウィンドウに個別にリストされます。これが望ましくない場合は、 grepprg
から -u
削除してください。この変更により、行上の最初の一致のみが表示されます。オプション--ignore-files
.gitignore
ファイルで指定されたファイルをスキップします (存在する場合)。再帰的検索の深さを現在のディレクトリのみに制限するには、 grepprg
に -1
を追加します。
これで、Vim で Vim :grep
コマンドを呼び出して、指定したPATH
上のファイルでPATTERN
一致を検索できるようになりました。
:grep PATTERN [PATH]
PATH
省略すると、作業ディレクトリが検索されます。 Vim で現在開いているファイルのみを検索するには、 PATH
として%
を使用します。
:grep PATTERN %
:grep
コマンドを使用すると、クイックフィックス ウィンドウに結果が表示され、見つかった一致にすばやくジャンプできます。
最新の一致リストを表示するクイックフィックス ウィンドウを開くには:
:copen
このウィンドウ内の行をダブルクリックして (または行を選択して Enter キーを押して)、一致するファイルおよびファイル内の場所にジャンプします。コマンド:cn
および:cp
入力すると、それぞれ次または前の一致にジャンプします。クイックフィックス ウィンドウの検索結果を更新するには、検索結果を grep するだけです。たとえば、作業ディレクトリ内でFIXME
とマークされた C++ ソース コードを再帰的に検索するには、次のようにします。
:grep -tc++ FIXME
クイックフィックスウィンドウを閉じるには:
:cclose
:grep
コマンドでugrepオプションを使用すると、たとえば、現在のファイル内の単一行および複数行のコメントを選択できます。
:grep -f c++/comments %
スペースを節約するために、クイックフィックスには複数行のコメントの最初の行のみが表示されます。複数行の一致のすべての行を表示するには、 grepformat
から%-G
削除します。
人気のある Vim ツールは ctrlp.vim で、次のものとともにインストールされます。
$ cd ~/.vim
$ git clone https://github.com/kien/ctrlp.vim.git bundle/ctrlp.vim
CtrlP は、次の行を.vimrc
に追加することでugrep を使用します。
if executable('ugrep')
set runtimepath^=~/.vim/bundle/ctrlp.vim
let g:ctrlp_match_window='bottom,order:ttb'
let g:ctrlp_user_command='ugrep "" %s -Rl -I --ignore-files -3'
endif
ここで、 -I
バイナリ ファイルをスキップし、オプション--ignore-files
.gitignore
ファイルが存在する場合に指定されたファイルをスキップし、オプション-3
ディレクトリの検索を 3 レベル (作業ディレクトリとその下の 2 レベルまで) に制限します。
Vim を起動し、次のコマンドを入力します。
:helptags ~/.vim/bundle/ctrlp.vim/doc
Vim で CtrlP ドキュメントを表示するには、次のコマンドを入力します。
:help ctrlp.txt
?目次に戻る
Manuel Uberti のおかげで、Emacs でugrep を使用できるようになりました。 Emacs 内で GNU grep の代わりにugrep を使用するには、 .emacs.d/init.el
ファイルに次の行を追加します。
(setq-default xref-search-program ‘ugrep)
これは、 Xref に依存するproject-find-regexp
などの Emacs コマンドがugrepの機能を活用できるようになったということを意味します。
さらに、Emacs grep コマンドでgrep
使用することもできます。たとえば、 grep-template
次のようにカスタマイズすることで、 ugrep
でlgrep
実行できます。
(setq-default grep-template "ugrep --color=always -0Iinr -e <R>")
Emacs バージョン 29 (以降) をお持ちでない場合は、Emacs master ブランチから Emacs をダウンロードしてビルドするか、 ugrepとの Xref 統合を手動で有効にすることができます。
(with-eval-after-load 'xref
(push '(ugrep . "xargs -0 ugrep <C> --null -ns -e <R>")
xref-search-program-alist)
(setq-default xref-search-program 'ugrep))
?目次に戻る
すぐに使用できるugrep は、標準の GNU/BSD grep コマンドライン オプションをすべてサポートしており、それらの多くも改善しています。詳細については、grep に対する顕著な改善点を参照してください。
GNU/BSD grep ASCII/LATIN1 の非 UTF Unicode パターンに厳密にこだわりたい場合は、オプション-U
使用して完全な Unicode パターン マッチングを無効にします。
実際、オプション-U
、 -Y
、 - を指定してugrep
実行します-.
--sort
使用すると、 egrep
とまったく同じように動作し、ASCII/LATIN1 の非 UTF Unicode パターンのみに一致し、空のパターンが隠しファイルを無視するのではなく、一致および検索できるようになります。 grep の等価性を参照してください。
オプション-U
、 -Y
、 -.
--sort
または必要に応じて他のオプションを含めます。
または、 ugrep
これらの名前にコピーすることで、 grep
、 egrep
およびfgrep
実行可能ファイルを作成できます。 ugrep
(またはugrep.exe
) 実行可能ファイルがgrep
( grep.exe
)、 egrep
( egrep.exe
)、 fgrep
( fgrep.exe
) としてコピーされ、オプション-U
、 -Y
および-.
-G
( grep
、 -E
( egrep
、 -F
( fgrep
のいずれかを指定すると、自動的に有効になります。さらに、 zgrep
、 zegrep
、 zfgrep
としてコピーすると、オプション-z
が有効になります。たとえば、 ugrep
がzegrep
としてコピーされる場合、オプションは-z
、 -E
、 -Y
、 -.
および--sort
が有効になっています。
同様に、 ugrep
へのシンボリックリンクとハードリンクも、 grep
、 egrep
、およびfgrep
置換を作成するために正常に機能します。たとえば、シンボリックリンクegrep
作成するには、次のようにします。
sudo ln -s `which ugrep` /opt/local/bin/egrep
/opt/local/bin
単なる例であり、 $path
に含まれる場合と含まれない場合があり、 $path
に応じてegrep
実行時に見つかる場合と見つからない場合があります。
次のオプションを使用した場合、 ugrep はGNU/BSD grep と同等になります。
grep = ugrep -G -U -Y -. --sort -Dread -dread
egrep = ugrep -E -U -Y -. --sort -Dread -dread
fgrep = ugrep -F -U -Y -. --sort -Dread -dread
zgrep = ugrep -z -G -U -Y -. --sort -Dread -dread
zegrep = ugrep -z -E -U -Y -. --sort -Dread -dread
zfgrep = ugrep -z -F -U -Y -. --sort -Dread -dread
どこ:
-U
Unicode ワイド文字パターン マッチングを無効にするため、たとえば、パターンxa3
UTF-8 シーケンス C2 A3 で表される Unicode コード ポイント U+00A3 ではなく、バイト A3 と一致します。 ugrep のデフォルトでは、 xa3
U+00A3 と一致します。テキスト パターンの検索には-U
使用せず、バイナリ検索、またはこれらのファイルをバイナリとして報告せずに latin-1 (iso-8859-1) ファイルを検索する場合にのみ使用することをお勧めします (ugrep v3.5.0 以降)。-Y
空の一致を有効にするため、たとえばパターンa*
、 a
のシーケンスではなくすべての行に一致します。 ugrep のデフォルトでは、パターンa*
a
のシーケンスと一致します。さらに、ugrep では、パターンa*b*c*
は、デフォルトで一致すると想定されているものと一致します。改善点を参照してください。-.
隠しファイル (ドットファイル) を検索します。デフォルトでは、ほとんどの Unix ユーティリティと同様に、隠しファイルは無視されます。--sort
、パス名でソートされた出力を指定します。最初にソートされた一致ファイルが表示され、続いてサブディレクトリ内のソートされた再帰的一致が表示されます。それ以外の場合、パフォーマンスを向上させるために、一致するファイルは特定の順序で報告されません。-Dread
と-dread
GNU/BSD grep のデフォルトですが、推奨されません。説明については改善点を参照してください。?目次に戻る
生産性を向上させるために.bashrc
に追加する一般的に使用されるエイリアス:
alias uq = 'ug -Q' # interactive TUI search (uses .ugrep config)
alias uz = 'ug -z' # compressed files and archives search (uses .ugrep config)
alias ux = 'ug -U --hexdump' # binary pattern search (uses .ugrep config)
alias ugit = 'ug -R --ignore-files' # works like git-grep & define your preferences in .ugrep config
alias grep = 'ug -G' # search with basic regular expressions (BRE) like grep
alias egrep = 'ug -E' # search with extended regular expressions (ERE) like egrep
alias fgrep = 'ug -F' # find string(s) like fgrep
alias zgrep = 'ug -zG' # search compressed files and archives with BRE
alias zegrep = 'ug -zE' # search compressed files and archives with ERE
alias zfgrep = 'ug -zF' # find string(s) in compressed files and/or archives
alias xdump = 'ugrep -X ""' # hexdump files without searching (don't use .ugrep config)
alias zmore = 'ugrep+ -z -I -+ --pager ""' # view compressed, archived and regular files (don't use .ugrep config)
?目次に戻る
-Q
を使用して対話型クエリ TUI を開始します。n
。-U
で無効になります)。--bool
)。--ignore-files
オプションを使用して gitignore をサポートします。-Z
によるあいまい (近似) マッチングをサポートします。-z
を使用して圧縮ファイルとアーカイブを検索します。-z
を使用して cpio、jar、pax、tar、zip、および 7z アーカイブを検索します。-z
および--zmax=NUM
を指定してアーカイブ内に保存された cpio、jar、pax、tar、zip、および 7z アーカイブを最大NUM
レベルまで再帰的に検索します。--filter
で pdf、doc、docx、xls、xlsx、epub などを検索します。-r
を使用します。-.
で有効になります)。-E
は egrep であり、 -G
BRE を有効にします)。-J1
で無効になります)。-W
(バイナリ一致を 16 進数で出力し、テキスト一致出力を通常どおり出力) および-X
(すべての一致を 16 進数で出力) を使用して 16 進ダンプを生成します。--format
オプションを使用) で一致を出力できます。-f
、 GREP_PATH
環境変数、または/usr/local/share/ugrep/patterns
にインストールされている事前定義パターンを使用します。 -f
が指定され、1 つ以上の-e
パターンも指定されている場合、オプション-F
、 -x
、および-w
-f
パターンに適用されません。これは、これらのオプションで適切に動作しなくなる可能性がある事前定義されたパターンで-f
を使用した場合の混乱を避けるためです。-O
、 -M
、および-t
それぞれファイル拡張子、ファイル署名のマジック バイト パターン、および事前定義されたファイル タイプを指定します。これにより、たとえば再帰検索オプション-R
および-r
を使用して、ディレクトリ ツリー内の特定の種類のファイルを検索できるようになります。オプション-O
、 -M
、および-t
、cpio、jar、pax、tar、zip、および 7z ファイル内のアーカイブ ファイルにも適用されます。-k
, --column-number
、オプション--tabs
で指定されたようにタブを展開することでタブ間隔を考慮して列番号を表示します。-P
(Perl 正規表現) は、後方参照 ( --format
を使用) と後読みをサポートします。これは、PCRE2 または Boost.Regex ライブラリを使用して、PCRE のような構文で高速に Perl 正規表現を照合します。-b
とオプション-o
またはオプション-u
を併用すると、ugrep は、GNU/BSD grep によって報告される一致した行の先頭のバイト オフセットではなく、パターン一致の正確なバイト オフセットを表示します。-u
、 --ungroup
使用すると、複数の一致を 1 行にグループ化しません。このオプションは、行上の追加のパターン一致ごとに、一致した入力行を再度表示します。このオプションは、ファイルごとに一致した行数ではなく、ファイルごとのパターン一致の総数を報告するオプション-c
と併用すると特に便利です。-Y
使用すると、空のパターンの照合が有効になります。空の一致パターンを使用した grep は奇妙で、GNU grep と BSD grep では異なる結果が得られます。デフォルトでは、空の一致はugrepによって出力されません。これにより、「ランダムな」結果が生じる可能性のある間違いを回避できます。たとえば、GNU/BSD grep では、パターンa*
入力内のすべての行と一致し、実際にはxyz
と 3 回一致します ( x
、 y
、 z
前と間の空の遷移)。空の一致を許可するには、 ugrepオプション-Y
が必要です。 ^
で始まるか$
で終わるパターン ( ^h*$
など) は空と一致します。これらのパターンでは、オプション-Y
が自動的に有効になります。-D, --devices=ACTION
は、デフォルトではread
ではなくskip
ます。これにより、デフォルトでデバイスをread
GNU/BSD grep で発生する可能性がある、再帰的に検索されるディレクトリ内の名前付きパイプで予期せずハングすることが防止されます。-d, --directories=ACTION
は、デフォルトではread
ではなくskip
ます。デフォルトでは、コマンドラインで指定されたディレクトリが検索されますが、サブディレクトリのさらに深くまで再帰的に検索されることはありません。-N PATTERN
を提供します。これは、すべてのX
入力をスキップし、検索からX
削除する形式(?^X)
のパターンです。たとえば、否定パターンを使用すると、ソース コード内の識別子を検索するときに文字列やコメントをスキップし、文字列やコメントに含まれない一致を見つけることができます。事前定義されたzap
パターンは否定パターンを使用します。たとえば、C++ コメント内のパターン一致を無視するには、 -f cpp/zap_comments
を使用します。GREP_OPTIONS
環境変数を無視します。また、GNU grep はこの理由でGREP_OPTIONS
放棄しました。作業ディレクトリまたはホーム ディレクトリ (存在する場合) にある .ugrep 構成ファイルをロードするug
コマンドを使用するか、シェル エイリアスを使用して特定の検索オプションを備えた新しいコマンドを作成してください。?目次に戻る
作業ディレクトリまたはホーム ディレクトリに配置された構成ファイル.ugrep
使用して検索を実行するには ( ug
ugrep --config
と同じであることに注意してください):
ug PATTERN FILE...
.ugrep
構成ファイルを作業ディレクトリに保存するには、ホーム ディレクトリでこのファイルを編集して、 ug
のデフォルトの設定をカスタマイズします。
ug --save-config
作業ディレクトリを検索し、 main
再帰的に深く検索するには (ファイル引数が指定されていない場合は、 -r
recurse symlinks がデフォルトで有効になることに注意してください):
ug main
同じですが、C++ ソース コード ファイルのみを再帰的に検索し、他のファイルはすべて無視します。
ug -tc++ main
同様に、対話型クエリ TUI を使用して、初期検索パターンmain
から開始します (パターンは通常対話的に指定され、すべてのコマンド ライン引数がファイル/ディレクトリと見なされるため、初期パターンを使用する-Q
にはオプション-e
が必要であることに注意してください)。
ug -Q -tc++ -e main
C++ ファイルで正規表現パターンを使用して#define
(および# define
など) を検索するには ( *
と?
のシェルのグロビングを防ぐためにパターンを引用符で囲む必要があることに注意してください):
ug -tc++ '#[t ]*define'
ディレクトリmyproject
内のシンボリックリンク ( -r
) をたどらずにmain
を単語 ( -w
) として再帰的に検索し、一致した行の隣に一致する行番号 ( -n
) と列番号 ( -k
) を表示するには、次のようにします。
ug -r -nkw main myproject
同じですが、深く再帰せずにmyproject
のみを検索します (デフォルトでは、ディレクトリ引数は 1 つのレベルで検索されることに注意してください)。
ug -nkw main myproject
同じですが、 -2
を使用してmyproject
と 1 つ深いサブディレクトリ レベル (2 レベル) を検索します。
ug -2 -nkw main myproject
同じですが、 -tc++
を使用してmyproject
とそのサブディレクトリ内の C++ ファイルのみを検索します。
ug -tc++ -2 -nkw main myproject
同じですが、 -z
を使用すると、アーカイブ (zip ファイルや tar ファイルなど) および圧縮ファイル内も検索できます。
ug -z -tc++ -2 -nkw main myproject
gitignored ファイルを無視して、 main
の作業ディレクトリを再帰的に検索します (たとえば、 .gitignore
が作業ディレクトリ以下にあると仮定します)。
ug --ignore-files -tc++ -nkw main
.gitignore
ファイルによって無視されない、作業ディレクトリ以降のすべてのファイルをリストするには、次のようにします。
ug --ignore-files -l ''
-t
引数に対応して検索されるファイル名拡張子と「マジック バイト」(シバン)のリストを表示するには、次のようにします。
ug -tlist
-l
を使用した拡張子とシバンに基づいて、すべてのシェル ファイルを再帰的にリストするには ( ''
空でないファイルに一致することに注意してください)。
ug -l -tShell ''
?目次に戻る
文字列やコメント ブロックを無視してソース コード内のmain
を検索するには、オプション-N
指定して否定パターンを使用し、C/C++ で引用された文字列やコメント ブロック内の不要な一致をスキップします。
ug -r -nkw -e 'main' -N '"(\.|\r?n|[^\n"])*"|//.*|/*(.*n)*?.**+/' myproject
正しく入力するのは大変な作業です。あなたも私と同じなら、もっと重要なことに取り組んでいるときに、正規表現パターンをいじることに時間を費やしたくないでしょう。 ugrep
ツールとともにインストールされるugrepの事前定義パターン ( -f
) を使用する簡単な方法があります。
ug -r -nkw 'main' -f c/zap_strings -f c/zap_comments myproject
このクエリは、README、Makefile など、C/C++ ソース コード以外のファイルも検索します。 -r
を使用してシンボリックリンクもスキップします。 C/C ++ファイルを選択して、オプション-tc,c++
使用してC/C ++ファイルを選択して、 -R
のファイルとディレクトリにSymlinksを含めることにより、このクエリを改善しましょう。
ug -R -tc,c++ -nkw 'main' -f c/zap_strings -f c/zap_comments myproject
識別子main
のみを探したいが、 mainh*(
main(
としてではない場合はどうなりますか?
ug -R -tc,c++ -nkw -e 'main' -N 'mainh*(' -f c/zap_strings -f c/zap_comments myproject
これにより、 -e
および-N
オプションを使用して、それぞれパターンとネガティブパターンを明示的に指定します。これは、基本的にパターンmain|(?^mainh*()
形成します。ここで、 h
スペースとタブと一致します。一般に、ネガティブパターンは、興味のないパターンマッチを除外するのに役立ちます。
別の例として、C/C ++コメントブロックでFIXME
単語を検索したいとします。そのために、最初にUGREPの事前定義されたc/comments
パターンでコメントブロックを選択し、次にパイプを使用してFIXME
で行を選択することができます。
ug -R -tc,c++ -nk -f c/comments myproject | ug -w 'FIXME'
パイプで結果をフィルタリングすることは、一般に、一部の検索ツールが使用するロジックを使用するよりも簡単です。このアプローチは、UNIXスピリットに従って、ユーティリティをシンプルに保ち、より複雑なタスクのために組み合わせて使用します。
文字列やコメントをスキップしながら、Javaソースコードで見つかったすべての識別子のソートされたリストを作成しましょう。
ug -R -tjava -f java/names myproject | sort -u
これは、regex p{JavaIdentifierStart}p{JavaIdentifierPart}*
patterns/java/names
で定義されているJava Unicode識別子と一致します。
従来のグレップとグレップのようなツールを使用すると、関数qsort
を定義するC/C ++ソースファイルを再帰的に検索するのに多大な努力が必要です。
ug -R --include='*.c' --include='*.cpp' '^([ t]*[[:word:]:*&]+)+[ t]+qsort[ t]*([^;n]+$' myproject
幸いなことに、 UGREPを使用すると、Option -Oc,cpp
使用し、すべての関数定義を生成するツールでインストールされている定義済みパターンfunctions
使用して、拡張機能.c
または.cpp
を使用してファイル内のすべての関数定義を選択できます。次に、必要なものを選択します。
ug -R -Oc,cpp -nk -f c/functions | ug 'qsort'
-tc,c++
使用してC/C ++ファイルを選択できたことに注意してください。ただし、 .c
および.cpp
ファイルのみを検索する場合はヘッダーファイルも含まれます。
また、 .gitignore
で定義されている検索からファイルやディレクトリをスキップすることもできます。そのためには、1つ以上の.gitignore
ファイルが見つかった場合、 .gitignore
のグローブに一致する再帰検索からファイルとディレクトリを除外するために--ignore-files
使用します。
ug -R -tc++ --ignore-files -f c++/defines
これにより、 #define
行( -f c++/defines
)の作業ディレクトリでC ++ファイル( -tc++
)が検索され、 .gitignore
で宣言されたファイルとディレクトリをスキップします。これを入力するのが長すぎると、GitHubディレクトリを検索するエイリアスを定義してください。
alias ugit='ugrep -R --ignore-files'
ugit -tc++ -f c++/defines
パイプのチェーンを押して一致を強調するには、使用する必要があります--color=always
:
ugit --color=always -tc++ -f c++/defines | ugrep -w 'FOO.*'
これにより、 .gitignore
で定義されたファイルをスキップして、C/C ++ソースコードファイルのすべての#define FOO...
マクロのカラーハイライト付きリストが返されます。
除外は常に包含よりも優先されるため、 --exclude
は--include
しないため、 --include-from='.gitignore'
は補完されないことに注意してください。 --include
--include-dir
で明示的に指定されたファイルのみが訪問されます。ファイルとディレクトリの両方と見なされるグローブのリストから、それぞれ--include
と--include-dir
に追加するグローブのリスト--include-from
。これは、このファイルにディレクトリ名とディレクトリパスが明示的にリストされていない場合、 --include-from
を使用して訪問されないことを意味します。
UGREPは、入力が有効なUTFエンコードユニコードであるかどうかを確認するため( -U
が使用されない限り)、プログラムによって生成された非UTF出力を無視するためにフィルターとして使用することができます。
program | ugrep -I ''
プログラムが有効な出力を生成すると、出力が渡されます。そうしないと、出力がオプションを除外します-I
。出力が最初に非常に大部分が有効であるが、無効な出力が続く場合、UGREPは最初に出力を表示するが、それ以降の無効な出力を除外する場合があります。
有効なASCIIまたはUTFエンコードされたラインをフィルタリングし、次の行を削除します。
program | ugrep '[p{Unicode}--[n]]+'
p{Unicode}
n
に一致することに注意してください。ただし、ファイル全体を一致させたくありません。 [p{Unicode}--[n]]+
を使用した線のみ。
?目次に戻る
Ugrep Manページ:
man ugrep
ヘルプページを表示するには:
ug --help
WHAT
言及するオプションを表示するには:
ug --help WHAT
-t TYPES
のリストを表示するには、オプション値:
ug -tlist
インタラクティブクエリTUIで、ヘルプとオプションについてF1またはCTRL-Zを押します。
ug -Q
?目次に戻る
--config[=FILE], ---[FILE]
Use configuration FILE. The default FILE is `.ugrep'. The working
directory is checked first for FILE, then the home directory. The
options specified in the configuration FILE are parsed first,
followed by the remaining options specified on the command line.
The ug command automatically loads a `.ugrep' configuration file,
unless --config=FILE or --no-config is specified.
--no-config
Do not load the default .ugrep configuration file.
--save-config[=FILE] [OPTIONS]
Save configuration FILE to include OPTIONS. Update FILE when
first loaded with --config=FILE. The default FILE is `.ugrep',
which is automatically loaded by the ug command. When FILE is a
`-', writes the configuration to standard output. Only part of the
OPTIONS are saved that do not cause searches to fail when combined
with other options. Additional options may be specified by editing
the saved configuration file. A configuration file may be modified
manually to specify one or more config[=FILE] to indirectly load
the specified FILEs, but recursive config loading is not allowed.
ug
コマンドは、コンテキスト依存のインタラクティブ検索を目的としており、 ugrep --config
コマンドに相当します。作業ディレクトリに存在する場合、またはホームディレクトリに存在しない場合、構成ファイルをロードします.ugrep
ug PATTERN ...
ugrep --config PATTERN ...
ug
コマンドは、検索されたディレクトリごとの名前でファイルをソートします。構成ファイルには、 NAME=VALUE
ペアが含まれます。ここで、 NAME
は長いオプション( --
)の名前と=VALUE
引数であり、オプションであり、オプションに応じて省略できます。 #
で始まる空の線と行は無視されます:
# Color scheme
colors=cx=hb:ms=hiy:mc=hic:fn=hi+y+K:ln=hg:cn=hg:bn=hg:se=
# Disable searching hidden files and directories
no-hidden
# ignore files specified in .ignore and .gitignore in recursive searches
ignore-files=.ignore
ignore-files=.gitignore
コマンドラインオプションは次の順序で解析されます。最初に(デフォルトまたは名前付き)構成ファイルがロードされ、次にコマンドラインの残りのオプションと引数が解析されます。
オプション--stats
検索後に使用される構成ファイルを表示します。
名前の構成ファイルは、コマンドラインオプションの数を1つだけに削減し---FILE
FILE
で指定されたオプションのコレクションを使用することにより、カスタム検索タスクを合理化することを目的としています。 --config=FILE
オプションとその略式フォーム---FILE
ワーキングディレクトリにある、またはホームディレクトリにある場合は、見つかった場合は、見つかっていない場合は:
ug ---FILE PATTERN ...
ugrep ---FILE PATTERN ...
FILE
が見つからない場合、または読み取れない場合にエラーが生成されます。
名前の構成ファイルは、プロジェクトの開発ワークフローにおけるタスクの要件に固有のオプションのコレクションを定義するために使用できます。たとえば、FIXMEおよびTODOアイテムを使用してコメントのソースコードとドキュメントをチェックして、未解決の問題を報告するため。このような名前の構成ファイルは、プロジェクトディレクトリに配置することでプロジェクトにローカライズすることも、ホームディレクトリに配置してグローバルにすることもできます。視覚的なフィードバックの場合、このタスクに固有の配色を構成FILE
のオプションcolors
で指定して、デフォルトの構成とは対照的に、名前付き構成によって生成される出力を識別するのに役立ちます。
--save-config
オプションは、 --config
がロードされた現在の構成を使用して、 .ugrep
構成ファイルをワーキングディレクトリに保存します。これにより、現在の構成と、指定された場合は追加のオプションを組み合わせて保存します。検索結果に悪影響を与えることができない他のオプションやオプションと競合できないオプションのみが保存されます。
--save-config=FILE
オプションは、指定されたFILE
に構成を保存します。構成は、 FILE
が-
の場合、標準出力に書き込まれます。
または、構成ファイルを手動で作成または変更することもできます。構成ファイルには、1つ以上のconfig[=FILE]
FILE
含まれる場合があります。 Manuallを作成する最も簡単な方法は、ファイルの上部にconfig
指定し、デフォルトをオーバーライドする長いオプションが続くことです。
?目次に戻る
-Q[=DELAY], --query[=DELAY]
Query mode: start a TUI to perform interactive searches. This mode
requires an ANSI capable terminal. An optional DELAY argument may
be specified to reduce or increase the response time to execute
searches after the last key press, in increments of 100ms, where
the default is 3 (300ms delay). No whitespace may be given between
-Q and its argument DELAY. Initial patterns may be specified with
-e PATTERN, i.e. a PATTERN argument requires option -e. Press F1
or CTRL-Z to view the help screen. Press F2 or CTRL-Y to invoke a
command to view or edit the file shown at the top of the screen.
The command can be specified with option --view, or defaults to
environment variable PAGER when defined, or EDITOR. Press Tab and
Shift-Tab to navigate directories and to select a file to search.
Press Enter to select lines to output. Press ALT-l for option -l
to list files, ALT-n for -n, etc. Non-option commands include
ALT-] to increase context. See also options --no-confirm, --delay,
--split and --view.
--no-confirm
Do not confirm actions in -Q query TUI. The default is confirm.
--delay=DELAY
Set the default -Q key response delay. Default is 3 for 300ms.
--split
Split the -Q query TUI screen on startup.
--view[=COMMAND]
Use COMMAND to view/edit a file in -Q query TUI by pressing CTRL-Y.
このオプションは、ユーザーインターフェイスを開始して、検索パターンをインタラクティブに入力します。
-c
一致をカウントできます。 Alt -Cを再び押すことは-c
無効にします。オプションは、検索中またはヘルプ画面を表示するときにALTキーで切り替えることができます。 ALT/METAキーがサポートされていない場合(X11 Xtermなど)、Ctrl-Oを押し続けてオプションに対応するキーを押します。-g
ファイルとディレクトリマッチンググローブを入力または編集します。 Pressing ESCは、コントロールをクエリパターンプロンプトに戻します(グローブは保存されます)。グローブの前にあるとき!
または、 ^
、グローブがA /
含むときにグローブと一致する名前のファイルをスキップします、フルパス名は一致します。それ以外の場合は、ベースネームが一致します。グローブがA /
で終わると、ディレクトリが一致します。Q>
(正常)、 F>
(固定文字列)、 G>
(基本的なregex)、 P>
(perlマッチング)、およびZ>
(ファジーマッチング)の間の切り替えです。 --glob=
プロンプトが表示されると、Gitignoreスタイルのグローブパターンのコンマ分離リストが入力される場合があります。 ESCを押すと、コントロールをパターンプロンプトに戻します。--view
で指定されたポケットベルのあるファイルを表示します。--view=COMMAND
で指定できます。それ以外の場合は、 PAGER
またはEDITOR
環境変数を使用して、Ctrl-Yを使用してコマンドを呼び出します。この機能を使用するには、出力でファイル名を有効にして表示する必要があります。--color
オプションに応じて色付けされます。DELAY
値を指定します。ただし、押した各キーによる検索を繰り返し開始およびキャンセルした結果、値が低い場合にシステム負荷が増加する可能性があります。--heading
有効になります。 Alt-+を押して見出しを切り替えます。クエリTUIキーマッピング:
キー | 関数 |
---|---|
Alt-key | key に対応するUGREPコマンドラインオプションを切り替えます |
Alt-/ xxxx / | Unicode hexコードポイントu+xxxxを挿入します |
Esc Ctrl-C | 戻るか終了します |
Ctrl-Q | 選択モードで選択された結果をクイックエグジットと出力 |
Tab | 画面の上部に表示されているファイルのディレクトリへのchdirまたはファイルを選択する |
Shift-Tab | Chdir 1つのレベルアップまたは解除ファイル |
Enter | 選択モードを入力し、選択した行を切り替えて、出口で出力します |
Up Ctrl-P | 上に移動 |
Down Ctrl-N | 下に移動 |
Left Ctrl-B | 左に移動 |
Right Ctrl-F | 右に移動 |
PgUp Ctrl-G | ディスプレイをページで移動します |
PgDn Ctrl-D | ディスプレイをページで移動します |
Alt-Up | ディスプレイアップを1/2ページ(MacOS Shift-Up ) |
Alt-Down | ディスプレイを1/2ページ(MacOS Shift-Down )に移動する |
Alt-Left | ディスプレイを1/2ページ左に移動(MacOS Shift-Left ) |
Alt-Right | ディスプレイを1/2ページ(Macos Shift-Right )右に移動する |
Home Ctrl-A | カーソルをラインの先頭に移動します |
Ctrl-E End | カーソルをラインの端まで移動します |
Ctrl-K | カーソルの後に削除します |
Ctrl-L | 画面を更新します |
Ctrl-O + key | Alt-key と同じように、 key に対応するugrepコマンドラインオプションを切り替える |
Ctrl-R F4 | ブックマークにジャンプします |
Ctrl-S | 次の監督/ファイル/コンテキストにジャンプします |
Ctrl-T F5 | 分割画面のトグル( --split はスプリットスクリーンTUIを開始します) |
Ctrl-U | カーソルの前に削除します |
Ctrl-V | 逐語的な文字 |
Ctrl-W | 1つの監督/ファイル/コンテキストをジャンプします |
Ctrl-X F3 | ブックマークを設定します |
Ctrl-Y F2 | 画面の上部に表示されているファイルを表示または編集します |
Ctrl-Z F1 | ヘルプとオプションを表示します |
Ctrl-^ | Chdirは、開始作業ディレクトリに戻ります |
Ctrl-] | カラー/モノを切り替えます |
Ctrl- | プロセスを終了します |
ワーキングディレクトリおよび以下のファイルをインタラクティブに検索するには:
ug -Q
同じですが、C ++ファイルのみに制限され、 .gitignore
ファイルを無視します。
ug -Q -tc++ --ignore-files
ワーキングディレクトリおよび以下のすべてのメイクファイルをインタラクティブに検索するには:
ug -Q -g 'Makefile*' -g 'makefile*'
同じですが、最大2つのディレクトリレベル(作業と1つのサブディレクトリレベル)の場合:
ug -Q -2 -g 'Makefile*' -g 'makefile*'
main.cpp
の内容をインタラクティブに表示して検索します。ここで、 -y
非一致線をコンテキストとして表示します。
ug -Q -y main.cpp
main.cpp
インタラクティブに検索するには、検索パターンTODO
と5行のマッチコンテキストから始まります(コンテキストをインタラクティブに有効にして無効にすることができます。
ug -Q -C5 -e TODO main.cpp
アーカイブの内容を表示して検索するには(Zip、Tarballなど)。
ug -Q -z archive.tar.gz
UGREPクエリ選択モードを使用して、 project.zip
からファイルをインタラクティブにunzip
します。
unzip project.zip `zipinfo -1 project.zip | ugrep -Q`
?目次に戻る
-L, --files-without-match
Only the names of files not containing selected lines are written
to standard output. Pathnames are listed once per file searched.
If the standard input is searched, the string ``(standard input)''
is written.
-l, --files-with-matches
Only the names of files containing selected lines are written to
standard output. ugrep will only search a file until a match has
been found, making searches potentially less expensive. Pathnames
are listed once per file searched. If the standard input is
searched, the string ``(standard input)'' is written.
-R, --dereference-recursive
Recursively read all files under each directory. Follow all
symbolic links to files and directories, unlike -r.
-r, --recursive
Recursively read all files under each directory, following symbolic
links only if they are on the command line. Note that when no FILE
arguments are specified and input is read from a terminal,
recursive searches are performed as if -r is specified.
-S, --dereference-files
When -r is specified, symbolic links to files are followed, but not
to directories. The default is not to follow symbolic links.
--depth=[MIN,][MAX], -1, -2, -3, ... -9, -10, -11, -12, ...
Restrict recursive searches from MIN to MAX directory levels deep,
where -1 (--depth=1) searches the specified path without recursing
into subdirectories. Note that -3 -5, -3-5, and -35 search 3 to 5
levels deep. Enables -r if -R or -r is not specified.
-g GLOBS, --glob=GLOBS
Search only files whose name matches the specified comma-separated
list of GLOBS, same as --include='glob' for each `glob' in GLOBS.
When a `glob' is preceded by a `!' or a `^', skip files whose name
matches `glob', same as --exclude='glob'. When `glob' contains a
`/', full pathnames are matched. Otherwise basenames are matched.
When `glob' ends with a `/', directories are matched, same as
--include-dir='glob' and --exclude-dir='glob'. A leading `/'
matches the working directory. This option may be repeated and may
be combined with options -M, -O and -t to expand searches. See
`ugrep --help globs' and `man ugrep' section GLOBBING for details.
-O EXTENSIONS, --file-extension=EXTENSIONS
Search only files whose filename extensions match the specified
comma-separated list of EXTENSIONS, same as --include='*.ext' for
each `ext' in EXTENSIONS. When `ext' is preceded by a `!' or a
`^', skip files whose filename extensions matches `ext', same as
--exclude='*.ext'. This option may be repeated and may be combined
with options -g, -M and -t to expand the recursive search.
-t TYPES, --file-type=TYPES
Search only files associated with TYPES, a comma-separated list of
file types. Each file type corresponds to a set of filename
extensions passed to option -O and filenames passed to option -g.
For capitalized file types, the search is expanded to include files
with matching file signature magic bytes, as if passed to option
-M. When a type is preceded by a `!' or a `^', excludes files of
the specified type. This option may be repeated.
--stats
Output statistics on the number of files and directories searched,
and the inclusion and exclusion constraints applied.
ファイル引数が指定されておらず、端末から入力が読み取られている場合、 -r
が指定されているかのように再帰検索が実行されます。標準入力から読み取りを強制するには、ファイル-
として指定します。
作業ディレクトリ内のすべての非空白ファイルを再帰的にリストするには:
ug -r -l ''
ワーキングディレクトリ内のすべての非空白ファイルをより深くリストすることはありません(この場合、ファイル引数が与えられているため.
作業ディレクトリの場合は):
ug -l '' .
Directory mydir
のすべての非空白ファイルをリストしますが、より深くはありません(ファイル引数が与えられているため):
ug -l '' mydir
Symlinksに続いて、Directory mydir
およびより深いすべての空でないファイルをリストするには:
ug -R -l '' mydir
サブディレクトリのみを訪問しながら、指定されたパス上のすべての非空白のファイルを再帰的にリストするために、1つのレベルの深いmydir/*/
でディレクトリmydir/
およびサブディレクトリが訪問されます( -2 -l
-l2
に省略できることに注意してください):
ug -2 -l '' mydir
Directory mydir
のすべての非空白ファイルを再帰的にリストし、シンボリックリンクに従わない( mydir
などのコマンドラインを除く):
ug -rl '' mydir
テキストCPP
一致するすべてのメイクファイルを再帰的にリストするには:
ug -l -tmake 'CPP'
すべてのMakefile.*
一致するbin_PROGRAMS
:
ug -l -g'Makefile.*' 'bin_PROGRAMS'
extension .shを使用して、すべての非空白のファイルを-Osh
で再帰的にリストするには:
ug -l -Osh ''
拡張機能と-tShell
に基づいてすべてのシェルスクリプトを再帰的にリストします。
ug -l -tShell ''
拡張機能に基づいてすべてのシェルスクリプトを-tshell
のみに再帰的にリストするには:
ug -l -tshell ''
?目次に戻る
--bool, -%, -%%
Specifies Boolean query patterns. A Boolean query pattern is
composed of `AND', `OR', `NOT' operators and grouping with `(' `)'.
Spacing between subpatterns is the same as `AND', `|' is the same
as `OR' and a `-' is the same as `NOT'. The `OR' operator binds
more tightly than `AND'. For example, --bool 'A|B C|D' matches
lines with (`A' or `B') and (`C' or `D'), --bool 'A -B' matches
lines with `A' and not `B'. Operators `AND', `OR', `NOT' require
proper spacing. For example, --bool 'A OR B AND C OR D' matches
lines with (`A' or `B') and (`C' or `D'), --bool 'A AND NOT B'
matches lines with `A' without `B'. Quoted subpatterns are matched
literally as strings. For example, --bool 'A "AND"|"OR"' matches
lines with `A' and also either `AND' or `OR'. Parentheses are used
for grouping. For example, --bool '(A B)|C' matches lines with `A'
and `B', or lines with `C'. Note that all subpatterns in a Boolean
query pattern are regular expressions, unless -F is specified.
Options -E, -F, -G, -P and -Z can be combined with --bool to match
subpatterns as strings or regular expressions (-E is the default.)
This option does not apply to -f FILE patterns. The double short
option -%% enables options --bool --files. Option --stats displays
the Boolean search patterns applied. See also options --and,
--andnot, --not, --files and --lines.
--files
Boolean file matching mode, the opposite of --lines. When combined
with option --bool, matches a file if all Boolean conditions are
satisfied. For example, --bool --files 'A B|C -D' matches a file
if some lines match `A', and some lines match either `B' or `C',
and no line matches `D'. See also options --and, --andnot, --not,
--bool and --lines. The double short option -%% enables options
--bool --files.
--lines
Boolean line matching mode for option --bool, the default mode.
--and [[-e] PATTERN] ... -e PATTERN
Specify additional patterns to match. Patterns must be specified
with -e. Each -e PATTERN following this option is considered an
alternative pattern to match, i.e. each -e is interpreted as an OR
pattern. For example, -e A -e B --and -e C -e D matches lines with
(`A' or `B') and (`C' or `D'). Note that multiple -e PATTERN are
alternations that bind more tightly together than --and. Option
--stats displays the search patterns applied. See also options
--not, --andnot, and --bool.
--andnot [[-e] PATTERN] ...
Combines --and --not. See also options --and, --not, and --bool.
--not [-e] PATTERN
Specifies that PATTERN should not match. Note that -e A --not -e B
matches lines with `A' or lines without a `B'. To match lines with
`A' that have no `B', specify -e A --andnot -e B. Option --stats
displays the search patterns applied. See also options --and,
--andnot, and --bool.
--stats
Output statistics on the number of files and directories searched,
and the inclusion and exclusion constraints applied.
--and
、 --not
、および--andnot
オプションには-e PATTERN
が必要であることに注意してください。
-%
オプションは、すべてのパターンをブールベースにし、最高レベルの優先順位から最低の次の論理操作をサポートします。
オペレーター | 代替 | 結果 |
---|---|---|
"x" | x 文字通り、正確に指定したとおりに一致させます(標準の正規表現を使用してQ およびE 使用) | |
( ) | ブール式グループ化 | |
-x | NOT x | 反転した一致、つまりx が一致しない場合、つまり一致します |
x|y | x OR y | x またはy で行を一致させます |
xy | x AND y | x とy の両方で行を一致させます |
x
とy
特別なシンボルから始まらないサブパターンです|
、 -
、および(
(引用符またはエスケープを使用してこれらに一致させる);
-
そして、同じではNOT
、優先されるOR
、それは-x|y
== (-x)|y
を意味します。
|
またはOR
であり、優先されますAND
つまり、 xy|z
== x (y|z)
を意味します。
--stats
オプションは、検索が完了した後、CNF(接続詞正規形式)に変換された人間の読み取り可能な形式でブールクエリを表示します。検索なしでCNFを表示するには、 echo | ugrep -% '...' --stats
。
サブパターンは出力でカラーハイライトされていますが、 NOT
ものを除きます( x|-y
のような著しいパターンを使用する場合、サブパターンではNOT
ラインに表示される場合があります)。 Subpatternsが重複する場合があることに注意してください。その場合、最初のマッチングサブパターンのみが色のハイライトされています。
SubpatternsがNewlinesと一致する場合、複数の線が一致する場合があります。ただし、1つの例外があります。 (?=X)
lookaheadsで終了するサブパターンは、 X
複数の行にまたがる場合に一致しない場合があります。
空のパターンは任意のライン(GREP標準)に一致します。したがって、 -% 'x|""|y'
すべてに一致し、 x
とy
色のハイライトではありません。オプション-y
、すべての行をコンテキストとして表示するために使用する必要があります。たとえば、 -y 'x|y'
。
FZFのようなインタラクティブクエリ(ファジーマッチング付きの固定文字列付きのブール検索で、 -w
のある-Z+4
と一致する最大4つの余分な文字を許可します)、タブとalt -yを押して、マッチ付きのファイルを表示します。 Shift-TabとAlt-Lを押して、一致するファイルのリストに戻ります。
ug -Q -%% -l -w -F -Z+4 --sort=best
オプションを備えたファイル内のどこにでも、 hot
とdog
両方を含むすべてのファイルを再帰的に見つけるには: --files
:
ug -%% 'hot dog'
ug --files -e hot --and dog
myfile.txt
にhot
とdog
両方を含む線を見つけるには:
ug -% 'hot dog' myfile.txt
ug -e hot --and dog myfile.txt
myfile.txt
でplace
を含むラインを見つけてから、 hotdog
またはtaco
(またはその両方)を見つけるには:
ug -% 'hotdog|taco place' myfile.txt
ug -e hotdog -e taco --and place myfile.txt
同じですが、 diner
に一致するラインを除外します:
ug -% 'hotdog|taco place -diner' myfile.txt
ug -e hotdog -e taco --and place --andnot diner myfile.txt
fast
とfood
両方に一致するが、 myfile.txt
ではbad
ないdiner
やラインのラインを見つけるには:
ug -% 'diner|(fast food -bad)' myfile.txt
fast food
のあるライン(正確に)またはdiner
のあるラインを見つけるが、 myfile.txt
ではbad
もold
ないラインを見つけるために:
ug -% '"fast food"|diner -bad -old' myfile.txt
同じですが、同じ意味を持つ別のブール式を使用してください:
ug -% '"fast food"|diner -(bad|old)' myfile.txt
myfile.txt
でgood
暗示するdiner
のある線を見つけるために(つまり、 diner
のないgood
ラインを見せ、 diner
と一緒にラインを見せますが、論理的に暗示されているgood
だけです!):
ug -% 'good|-diner' myfile.txt
ug -e good --not diner myfile.txt
myfile.txt
でfoo
と-bar
と"baz"
含む線を見つけるには(それではありません-
"
escapesを使用して、および
--and -e -bar
を使用して一致させる必要があります):
ug -% 'foo -bar "baz"' myfile.txt
ug -e foo --and -e -bar --and '"baz"' myfile.txt
myfile.cpp
TODO
またはFIXME
のラインを検索するが、xorのように同じ線上ではない。
ug -% 'TODO|FIXME -(TODO FIXME)' myfile.cpp
ug -e TODO -e FIXME --and --not TODO --not FIXME myfile.cpp
?目次に戻る
-e PATTERN, --regexp=PATTERN
Specify a PATTERN to search the input. An input line is selected
if it matches any of the specified patterns. This option is useful
when multiple -e options are used to specify multiple patterns, or
when a pattern begins with a dash (`-'), or to specify a pattern
after option -f or after the FILE arguments.
-f FILE, --file=FILE
Read newline-separated patterns from FILE. White space in patterns
is significant. Empty lines in FILE are ignored. If FILE does not
exist, the GREP_PATH environment variable is used as path to FILE.
If that fails, looks for FILE in /usr/local/share/ugrep/pattern.
When FILE is a `-', standard input is read. This option may be
repeated.
-L, --files-without-match
Only the names of files not containing selected lines are written
to standard output. Pathnames are listed once per file searched.
If the standard input is searched, the string ``(standard input)''
is written.
-N PATTERN, --neg-regexp=PATTERN
Specify a negative PATTERN to reject specific -e PATTERN matches
with a counter pattern. Note that longer patterns take precedence
over shorter patterns, i.e. a negative pattern must be of the same
length or longer to reject matching patterns. Option -N cannot be
specified with -P. This option may be repeated.
-v, --invert-match
Selected lines are those not matching any of the specified
patterns.
-w, --word-regexp
The PATTERN is searched for as a word, such that the matching text
is preceded by a non-word character and is followed by a non-word
character. Word-like characters are Unicode letters, digits and
connector punctuations such as underscore.
-x, --line-regexp
Select only those matches that exactly match the whole line, as if
the patterns are surrounded by ^ and $.
-%、 - %%、および、 - 、 - 従来のGNU/BSDグレップオプションよりも強力なブールクエリオプションを備えたブールクエリパターンも参照してください。
ファイルmyfile.sh
にラインを表示するが、一致する行ではない^[ t]*#
:
ug -v '^[ t]*#' myfile.sh
Scotty
ではなく、 FIXME
とurgent
のラインをmyfile.cpp
検索するには:
ugrep FIXME myfile.cpp | ugrep urgent | ugrep -v Scotty
同じですが、ブールクエリに-%
を使用してください:
ug -% 'FIXME urgent -Scotty' myfile.cpp
負のパターン0d+
を使用して555
0
パターン d+
+を使用して小数を検索するには:
ug -e 'd+' -N '0d+' -N 555 myfile.cpp
「ネガティブパターン」を使用して、ファイルmyfile.py
でdisplay
一致させずにdisp
で始まる単語を検索するには、 -N '/<display>'
を使用して、 -N
マッチをスキップするために追加のネガティブパターンを指定します。
ug -e '<disp' -N '<display>' myfile.py
ファイルの単語display
で行を検索するには、ファイルmyfile.py
の文字列とコメントでこの単語をスキップします。ここで、 -f
、この場合の事前定義されたパターンであるファイルのパターンを指定します。
ug -n -w 'display' -f python/zap_strings -f python/zap_comments myfile.py
空白の行ではない行を表示するには:
ug -x -e '.*' -N 'h*' myfile.py
同じですが、 h*
を使用して-v
と-x
使用します。すなわち^h*$
:
ug -v -x 'h*' myfile.py
単語のdisplay
含まないすべてのPythonファイルを再帰的にリストし、文字列やコメントで単語を発生させることを許可します。
ug -RL -tPython -w 'display' -f python/zap_strings -f python/zap_comments
?目次に戻る
--encoding=ENCODING
The encoding format of the input. The default ENCODING is binary
and UTF-8 which are the same. Note that option -U specifies binary
PATTERN matching (text matching is the default.)
バイナリ、ASCII、およびUTF-8ファイルでは、それらを検索するためにこのオプションを必要としません。また、UTF-16およびUTF-32ファイルは、UTF-16およびUTF-32ファイルが通常どおりUTF BOM(バイトオーダーマーク)から始まると仮定して、それらを検索するためにこのオプションを必要としません。他のファイルエンコーディングにはオプションが必要です--encoding=ENCODING
:
エンコーディング | パラメータ |
---|---|
アスキー | 該当なし |
UTF-8 | 該当なし |
bomを伴うUTF-16 | 該当なし |
BOMでUTF-32 | 該当なし |
UTF-16はw/o bomになります | UTF-16 またはUTF-16BE |
UTF-16 LE W/O BOM | UTF-16LE |
UTF-32 w/o bom | UTF-32 またはUTF-32BE |
UTF-32 w/o bom | UTF-32LE |
ラテン-1 | LATIN1 またはISO-8859-1 |
ISO-8859-1 | ISO-8859-1 |
ISO-8859-2 | ISO-8859-2 |
ISO-8859-3 | ISO-8859-3 |
ISO-8859-4 | ISO-8859-4 |
ISO-8859-5 | ISO-8859-5 |
ISO-8859-6 | ISO-8859-6 |
ISO-8859-7 | ISO-8859-7 |
ISO-8859-8 | ISO-8859-8 |
ISO-8859-9 | ISO-8859-9 |
ISO-8859-10 | ISO-8859-10 |
ISO-8859-11 | ISO-8859-11 |
ISO-8859-13 | ISO-8859-13 |
ISO-8859-14 | ISO-8859-14 |
ISO-8859-15 | ISO-8859-15 |
ISO-8859-16 | ISO-8859-16 |
Mac(cr = newline) | MAC |
マクロマン(cr = newline) | MACROMAN |
EBCDIC | EBCDIC |
DOSコードページ437 | CP437 |
DOSコードページ850 | CP850 |
DOSコードページ858 | CP858 |
Windowsコードページ1250 | CP1250 |
Windowsコードページ1251 | CP1251 |
Windowsコードページ1252 | CP1252 |
Windowsコードページ1253 | CP1253 |
Windowsコードページ1254 | CP1254 |
Windowsコードページ1255 | CP1255 |
Windowsコードページ1256 | CP1256 |
Windowsコードページ1257 | CP1257 |
Windowsコードページ1258 | CP1258 |
Koi8-r | KOI8-R |
KOI8-U | KOI8-U |
Koi8-ru | KOI8-RU |
正規表現パターンは常にUTF-8で指定されていることに注意してください(ASCIIを含む)。バイナリパターンを使用したバイナリファイルを検索するには、-u、-w、および-xを使用したバイナリファイルの検索と表示を参照してください。
ASCII(つまり7ビット)のすべてのファイルを再帰的にリストするには:
ug -L '[^[:ascii:]]'
非ASSASCII、つまりUTF-8、UTF-16、およびUTF-32ファイルが非ASCII Unicode文字(U+0080以降)のすべてのファイルを再帰的にリストするには:
ug -l '[^[:ascii:]]'
ファイルに非ASCIIユニコード(U+0080以降)が含まれているかどうかを確認するには:
ug -q '[^[:ascii:]]' myfile && echo "contains Unicode"
ファイル--format="%o%
無効なUnicode文字を削除するには(バイナリデータが検出されて拒否され、新しいラインが追加されているため-o
が機能しないことに注意してください。 ):
ug "[p{Unicode}n]" --format="%o" badfile.txt
Code Pointを一致させることにより、無効なUTFコンテンツ(IE無効なUTF-8バイトシーケンスまたはUTF-8/16/32コードポイントを含むファイル)を備えたファイルを再帰的にリストします.
ネガティブパターン-N 'p{Unicode}'
を使用して、各有効なUnicode文字を無視します。
ug -l -e '.' -N 'p{Unicode}'
笑いの顔の絵文字を含む線を表示する:
ug '[?-?]' emojis.txt
x{hhhh}
を使用して同じ結果が得られ、Unicode文字範囲を選択します。
ug '[x{1F600}-x{1F60F}]' emojis.txt
Gödel(またはGoedel)、Escher、またはBachという名前を含む線を表示するには:
ug 'G(ö|oe)del|Escher|Bach' GEB.txt wiki.txt
UTF-16 BOMでマークされているUTF-16ファイルで下または大文字でlorem
を検索するには:
ug -iw 'lorem' utf16lorem.txt
UTF16LOREM.TXTを検索するには、このファイルにUTF-16 BOMがない場合、 --encoding
を使用してください。
ug --encoding=UTF-16 -iw 'lorem' utf16lorem.txt
ISO-8859-1でエンコードされたspanish-iso.txt
検索するには:
ug --encoding=ISO-8859-1 -w 'año' spanish-iso.txt
?目次に戻る
-o, --only-matching
Output only the matching part of lines. If -A, -B or -C is
specified, fits the match and its context on a line within the
specified number of columns.
複数の行は、Newline文字に一致するパターンと一致する場合があります。 Option -o
使用して、一致するフルラインではなく、試合のみを出力します。
n
ラインブレークに一致するには、LF文字に一致するパターンにn
含めます。 rn
およびn
ラインブレイクを一致させる場合は、 r?n
使用するか、単にR
使用して、ユニコードラインブレークrn
、 r
、 v
、 f
、 n
、uを一致させるだけです。 +0085、U+2028およびU+2029。
c/c ++ /*...*/
マルチラインコメントに一致する:
ug '/*(.*n)*?.**+/' myfile.cpp
-fc/comments
を使用した事前定義されたc/comments
-o
を使用してC/C ++コメントに合わせます。
ug -of c/comments myfile.cpp
sed -n '/begin/,/end/p'
と同じ:怠zyな繰り返しを使用して、 begin
含む行とend
の最初の行の間のすべての線を一致させるには。
ug -o '.*begin(.|n)*?end.*' myfile.txt
?目次に戻る
-A NUM, --after-context=NUM
Output NUM lines of trailing context after matching lines. Places
a --group-separator between contiguous groups of matches. If -o is
specified, output the match with context to fit NUM columns after
the match or shortens the match. See also options -B, -C and -y.
-B NUM, --before-context=NUM
Output NUM lines of leading context before matching lines. Places
a --group-separator between contiguous groups of matches. If -o is
specified, output the match with context to fit NUM columns before
the match or shortens the match. See also options -A, -C and -y.
-C NUM, --context=NUM
Output NUM lines of leading and trailing context surrounding each
matching line. Places a --group-separator between contiguous
groups of matches. If -o is specified, output the match with
context to fit NUM columns before and after the match or shortens
the match. See also options -A, -B and -y.
-y, --any-line
Any line is output (passthru). Non-matching lines are output as
context with a `-' separator. See also options -A, -B, and -C.
--width[=NUM]
Truncate the output to NUM visible characters per line. The width
of the terminal window is used if NUM is not specified. Note that
double wide characters in the output may result in wider lines.
-o, --only-matching
Output only the matching part of lines. If -A, -B or -C is
specified, fits the match and its context on a line within the
specified number of columns.
マッチングラインの前後に2つのコンテキストを表示するには:
ug -C2 'FIXME' myfile.cpp
一致した行の後に3行のコンテキストを表示するには:
ug -A3 'FIXME.*' myfile.cpp:
C関数定義で一致する各ラインの前にコンテキストの1つの行を表示するには(C名は非統合です)。
ug -B1 -f c/functions myfile.c
C ++関数定義を使用して各マッチングラインの前にコンテキストの1行を表示するには(C ++名前はUnicodeになる場合があります):
ug -B1 -f c++/functions myfile.cpp
-y
との一致する線のコンテキストとして非一致線を表示するには:
ug -y -f c++/functions myfile.cpp
1つのHexdumpコンテキストの1行で一致する線のヘクスダンプを表示するには:
ug -C1 -UX 'xaaxbbxcc' a.out
行内のコンテキストは、オプション-o
で表示されます。コンテキストオプション:
ug -o -C20 'pattern' myfile.cpp
同じですが、見出し、線番号、列番号( -k
)とコンテキストの表示を備えたかなりの出力があります。
ug --pretty -oC20 'pattern' myfile.cpp
?目次に戻る
-f FILE, --file=FILE
Read newline-separated patterns from FILE. White space in patterns
is significant. Empty lines in FILE are ignored. If FILE does not
exist, the GREP_PATH environment variable is used as path to FILE.
If that fails, looks for FILE in /usr/local/share/ugrep/pattern.
When FILE is a `-', standard input is read. This option may be
repeated.
--ignore-files[=FILE]
Ignore files and directories matching the globs in each FILE that
is encountered in recursive searches. The default FILE is
`.gitignore'. Matching files and directories located in the
directory of the FILE and in subdirectories below are ignored.
Globbing syntax is the same as the --exclude-from=FILE gitignore
syntax, but files and directories are excluded instead of only
files. Directories are specifically excluded when the glob ends in
a `/'. Files and directories explicitly specified as command line
arguments are never ignored. This option may be repeated to
specify additional files.
-g GLOBS, --glob=GLOBS
Search only files whose name matches the specified comma-separated
list of GLOBS, same as --include='glob' for each `glob' in GLOBS.
When a `glob' is preceded by a `!' or a `^', skip files whose name
matches `glob', same as --exclude='glob'. When `glob' contains a
`/', full pathnames are matched. Otherwise basenames are matched.
When `glob' ends with a `/', directories are matched, same as
--include-dir='glob' and --exclude-dir='glob'. A leading `/'
matches the working directory. This option may be repeated and may
be combined with options -M, -O and -t to expand searches. See
`ugrep --help globs' and `man ugrep' section GLOBBING for details.
-O EXTENSIONS, --file-extension=EXTENSIONS
Search only files whose filename extensions match the specified
comma-separated list of EXTENSIONS, same as --include='*.ext' for
each `ext' in EXTENSIONS. When `ext' is preceded by a `!' or a
`^', skip files whose filename extensions matches `ext', same as
--exclude='*.ext'. This option may be repeated and may be combined
with options -g, -M and -t to expand the recursive search.
-t TYPES, --file-type=TYPES
Search only files associated with TYPES, a comma-separated list of
file types. Each file type corresponds to a set of filename
extensions passed to option -O and filenames passed to option -g.
For capitalized file types, the search is expanded to include files
with matching file signature magic bytes, as if passed to option
-M. When a type is preceded by a `!' or a `^', excludes files of
the specified type. This option may be repeated.
--stats
Output statistics on the number of files and directories searched,
and the inclusion and exclusion constraints applied.
ファイルタイプには、 ugrep -tlist
が記載されています。このリストは、確立されたファイル名拡張機能と「マジックバイト」に基づいています。リストされていないファイルタイプがある場合は、Options -O
および/または-M
を使用します。エイリアスを定義することをお勧めします。たとえば、 alias ugft='ugrep -Oft'
は、filename suffix .ft
を使用してファイルを検索する速記です。
-tc++
、 -o
、 -n
、および-f c++/functions
を持つ線番号を使用して、c/c ++ファイル( .h
、 .hpp
、 .c
、 .cpp
など)に関数定義を再帰的に表示するために:
ug -on -tc++ -f c++/functions
-Oc,cpp
、 -o
、 -n
、および-f c++/functions
を持つ行番号を持つ.c
および.cpp
ファイルの関数定義を再帰的に表示するには:
ug -on -Oc,cpp -f c++/functions
接尾.sh
付きファイルを除き、ファイル名拡張機能とシェルシバンとファイルを一致させるために、 -tShell
を使用してすべてのシェルファイルを再帰的にリストします。
ug -l -tShell -O^sh ''
すべての非シェルファイルを-t^Shell
で再帰的にリストするには:
ug -l -t^Shell ''
すべてのシェルファイルを、シェルファイル名の拡張機能を持たないシェルシバンで再帰的にリストするには:
ug -l -tShell -t^shell ''
C/C ++コメントでFIXME
を使用して行を検索するには、Multi-Line文字列のFIXME
を除外します。
ug -n 'FIXME' -f c++/zap_strings myfile.cpp
C ++文字列の一致を除外しながら、入力のラインを一致させるためにTODO
入力から標準入力からFIXME
読むには:
ug -on -f - -f c++/zap_strings myfile.cpp <<END
TODO
FIXME
END
XML要素と属性タグをXMLファイルに表示するには、 -o
と一致する部分に制限され、(マルチライン)コメントに配置されたタグを除外します。
ug -o -f xml/tags -f xml/zap_comments myfile.xml
?目次に戻る
-z, --decompress
Search compressed files and archives. Archives (.cpio, .pax, .tar)
and compressed archives (e.g. .zip, .7z, .taz, .tgz, .tpz, .tbz,
.tbz2, .tb2, .tz2, .tlz, .txz, .tzst) are searched and matching
pathnames of files in archives are output in braces. When used
with option --zmax=NUM, searches the contents of compressed files
and archives stored within archives up to NUM levels. If -g, -O,
-M, or -t is specified, searches files stored in archives whose
filenames match globs, match filename extensions, match file
signature magic bytes, or match file types, respectively.
Supported compression formats: gzip (.gz), compress (.Z), zip, 7z,
bzip2 (requires suffix .bz, .bz2, .bzip2, .tbz, .tbz2, .tb2, .tz2),
lzma and xz (requires suffix .lzma, .tlz, .xz, .txz),
lz4 (requires suffix .lz4),
zstd (requires suffix .zst, .zstd, .tzst),
brotli (requires suffix .br),
bzip3 (requires suffix .bz3).
--zmax=NUM
When used with option -z (--decompress), searches the contents of
compressed files and archives stored within archives by up to NUM
expansion stages. The default --zmax=1 only permits searching
uncompressed files stored in cpio, pax, tar, zip and 7z archives;
compressed files and archives are detected as binary files and are
effectively ignored. Specify --zmax=2 to search compressed files
and archives stored in cpio, pax, tar, zip and 7z archives. NUM
may range from 1 to 99 for up to 99 decompression and de-archiving
steps. Increasing NUM values gradually degrades performance.
GZIP( .gz
)、Compress( .Z
)、BZIP2( .bz
、 .bz2
、 .bzip2
)、LZMA( .lzma
)、XZ( .xz
)、LZ4( .lz4
)、ZSTD( .zst
、 .zstd
)、brotli( .br
)およびbzip3( .bz3
)は、対応するライブラリがインストールされ、ugrepでコンパイルされている場合にオプション-z
で検索されます。このオプションでは、ファイルを圧縮する必要はありません。非圧縮ファイルも検索されますが、遅くなります。
他の圧縮形式は、 UGREPフィルターで検索できます。
アーカイブ(CPIO、JAR、PAX、TAR、ZIP、7Z)は、オプション-z
で検索されます。一致するアーカイブ内の通常のファイルは、 {
および}
ブレースに囲まれたアーカイブパス名とともに出力されます。サポートされているタール形式は、V7、USTAR、GNU、Oldgnu、およびPaxです。サポートされているCPIO形式は、ODC、NEWC、およびCRCです。サポートされていないのは、時代遅れの非ポート可能な古いバイナリCPIO形式です。アーカイブ形式のCPIO、TAR、およびPAXは、ファイル名の接尾辞とは無関係に、コンテンツに基づいてオプション-z
で自動的に認識されます。
デフォルトでは、ZIPアーカイブ内に保存されている非圧縮アーカイブも検索されます。ZIPおよび7Zアーカイブに保存されているすべてのCPIO、PAX、およびTARファイルは、自動的に認識および検索されます。ただし、デフォルトでは、アーカイブ内に保存されている圧縮ファイルは認識されません。たとえば、TARファイル内に保存されているZIPファイルは検索されませんが、すべての圧縮ファイルとアーカイブは、それらを減圧せずにバイナリファイルであるかのように検索されます。
--zmax=NUM
は、最大NUM
レベルの深さまで圧縮されたファイルとアーカイブを含むアーカイブを検索します。 NUM
の値は、最大99の減圧および除去ステップで1〜99の範囲で、最大99のネストされたアーカイブを拡張します。大きい--zmax=NUM
値はパフォーマンスを低下させます。 TARファイルに保存されているZIPファイルの検索など、ほとんどの実用的なユースケースでは--zmax=2
が十分であるため、99が必要になる可能性は低いです。
Option -z
がオプション-g
、 -O
、 -M
、または-t
で使用される場合、ファイル名選択基準(GLOB、拡張機能、マジックバイト、またはファイルタイプ)に一致するArchivesおよび圧縮および非圧縮ファイルが検索されます。たとえば、 ugrep -r -z -tc++
main.cpp
やzipおよびtarアーカイブなどmain.cpp
C ++ファイルを検索します。検索には、存在するときにmain.cpp.gz
やmain.cpp.xz
などの圧縮C ++ファイルも含まれています。また、 main.cpp
などのCPIO、PAX、TAR、ZIP、および7Zアーカイブが含まれるC ++ファイルを検索します。オプション--stats
使用して、再帰検索でファイルパス名をフィルタリングするために適用されたグローブパターンのリストを表示し、アーカイブコンテンツを検索するときに表示します。
オプション-z
がオプション-g
、 -O
、 -M
、または-t
で使用される場合、CPIO、JAR、PAX、TAR、ZIP、7Zアーカイブを検索して、ファイル名選択基準に一致するアーカイブされたファイルが検索されます。
GZIP、Compress、およびZIP形式は自動的に検出されます。これは、標準入力(パイプからリダイレクトされた入力など)からGZIP圧縮データを読み取るときに役立ちます。その他の圧縮形式では、ファイル名の接尾辞が必要です: .bz
、 .bz2
、またはbzip2の.bzip2
、lzmaの.lzma
、xzの.xz
、zstdの.lz4
、 .zst
.zstd
brotliおよび.bz3
の.br
BZIP3の場合。また、gzip用の圧縮タールアーカイブ.tpz
速記.taz
、 .tgz
.tbz
.tbz2
、 .tb2
、および.tz2
for bzip2、lzmaの.tlz
、xzの.txz
、zstdの.tzst
は認識されます。標準入力からUGREPでこれらの形式を検索するには、オプションを使用します--label='stdin.bz2'
for bzip2、 --label='stdin.lzma'
for lzma、 --label='stdin.xz'
for xz、 --label='stdin.lz4
for lz4および--label='stdin.zst
for zstdなど。 stdin
という名前は任意であり、省略される場合があります。
形式 | ファイル名の接尾辞 | Tar/Paxアーカイブショートサフィックス | 接尾辞が必要ですか? | stdinのugrep | 図書館 |
---|---|---|---|---|---|
gzip | .gz | .taz 、 .tgz 、 .tpz | いいえ | 自動 | リブズ |
圧縮する | .Z | .taZ 、 .tZ | いいえ | 自動 | 内蔵 |
ジップ | .zip 、 .zipx 、 .ZIP | いいえ | 自動 | リブズ | |
7zip | .7z | はい | --label=.7z | 内蔵 | |
bzip2 | .bz 、 .bz2 、 .bzip2 | .tb2 、 .tbz 、 .tbz2 、 .tz2 | はい | --label=.bz2 | リブズ2 |
ルズマ | .lzma | .tlz | はい | --label=.lzma | リブルズマ |
xz | .xz | .txz | はい | --label=.xz | リブルズマ |
lz4 | .lz4 | はい | --label=.lz4 | liblz4 | |
zstd | .zst 、 .zstd | .tzst | はい | --label=.zst | libzstd |
ブロトリ | .br | はい | --label=.br | libbrotlidec | |
BZIP3 | .bz3 | はい | --label=.bz3 | libbzip3 |
GZIP、BZIP2、XZ、LZ4、およびZSTD形式は、連結された圧縮ファイルをサポートしています。連結された圧縮ファイルは、1つのファイルとして検索されます。
サポートされているZIP圧縮法は、保存されています(0)、デフレート(8)、BZIP2(12)、LZMA(14)、XZ(95)、ZSTD(93)が保存されます。 BZIP2、LZMA、XZ、およびZSTDメソッドは、UGREPを対応する圧縮ライブラリにコンパイルする必要があります。
暗号化されたZIPアーカイブの検索はサポートされていません(おそらく、強化のリクエストに応じて、おそらく将来のリリースでは)。
7zipアーカイブを検索すると、他の方法に比べてより多くのRAMと時間がかかります。 7ZIP LZMA SDK実装は、ストリーミングをサポートせず、物理的なシーク可能な7Zファイルを必要とします。これは、アーカイブ内にネストされたときに7Zファイルを検索できないことを意味します。 7zipを避けるのが最善です。 7zipのサポートは./build.sh --disable-7zip
で無効にすることができます。
オプション-z
、タスクの並列性にスレッドを使用して、減圧ストリームの検索と同時に減圧器を実行することにより、大きなファイルの検索をスピードアップします。
package.zip
アーカイブに保存されているすべての非空白ファイルをリストするには、すべてのCPIO、PAX、TAR、ZIP、および7Zファイルの内容を含む:保存されています。
ug --zmax=2 -z -l '' package.zip
同じですが、 ugrep -tlist
を呼び出すスクリプトを含む-tPython
ソースコードファイルのみをリストします。
ug --zmax=2 -z -l -tPython '' package.zip
依存関係を持つTARファイルとして配布されたPythonアプリケーションを検索するには、ホイール(Pythonコードを備えたZIPファイル)として、 app.tgz
でmy_class
単語を検索します。
ug --zmax=2 -z -tPython -w my_class app.tgz
CおよびC ++のコメントをスキップしながら、単語my_function
の圧縮ファイルを含むC ++ファイルを再帰的に検索するには:
ug -z -r -tc++ -Fw my_function -f cpp/zap_comments
BZIP2、LZMA、XZ、LZ4、およびZSTD圧縮データを標準入力で検索するには、オプション--label
使用して圧縮形式に対応する拡張を指定して、BZIP2拡張がUGREPに利用できない場合に減圧を強制する場合、次のことを強制します。
cat myfile.bz2 | ugrep -z --label='stdin.bz2' 'xyz'
TODO
およびFIXME
行のproject.zip
でファイルmain.cpp
検索するには:
ug -z -g main.cpp -w -e 'TODO' -e 'FIXME' project.zip
TODO
およびFIXME
ラインを使用してC ++ファイルをTarball project.tar.gz
検索するには:
ug -z -tc++ -w -e 'TODO' -e 'FIXME' project.tar.gz
GLOWに一致するファイルを検索するには*.txt
project.zip
で、Word license
のZipがいずれにしても( -g
GLOB引数を引用する必要があることに注意してください):
ug -z -g '*.txt' -w -i 'license' project.zip
Tarball project.tgz
のすべてのC ++ファイルを表示およびページに表示します。
ug --pager -z -tc++ '' project.tgz
GitignoreスタイルのGlob /**/projects/project1.*
projects.tgz
に一致するファイルをリストするには、 December 12
にテキストをアーカイブに含むファイルを選択します。
ug -z -l -g '/**/projects/project1.*' -F 'December 12' projects.tgz
-Ojar
と-OMF
搭載したJARファイルでMeta -inf/manifest.mfデータを表示するには、JARファイルとMFファイルを選択します( -Ojar
が必要です。代わりに標準入力):
ug -z -h -OMF,jar '' my.jar
project.tgz
からFIXME
含むc ++ファイルを抽出するには、 -m1
を使用して--format="'%z '"
を使用して、単語をFIXME
に一致させるアーカイブにあるファイルのパス名のスペース分離リストを生成します。
tar xzf project.tgz `ugrep -z -l -tc++ --format='%z ' -w FIXME project.tgz`
find
を使用して深さFirst検索を実行するには、 cpio
とugrep
使用してファイルを検索します。
find . -depth -print | cpio -o | ugrep -z 'xyz'
?目次に戻る
--ignore-files[=FILE]
Ignore files and directories matching the globs in each FILE that
is encountered in recursive searches. The default FILE is
`.gitignore'. Matching files and directories located in the
directory of the FILE and in subdirectories below are ignored.
Globbing syntax is the same as the --exclude-from=FILE gitignore
syntax, but files and directories are excluded instead of only
files. Directories are specifically excluded when the glob ends in
a `/'. Files and directories explicitly specified as command line
arguments are never ignored. This option may be repeated to
specify additional files.
-M MAGIC, --file-magic=MAGIC
Only files matching the signature pattern MAGIC are searched. The
signature "magic bytes" at the start of a file are compared to
the MAGIC regex pattern. When matching, the file will be searched.
When MAGIC is preceded by a `!' or a `^', skip files with matching
MAGIC signatures. This option may be repeated and may be combined
with options -O and -t to expand the search. Every file on the
search path is read, making searches potentially more expensive.
-O EXTENSIONS, --file-extension=EXTENSIONS
Search only files whose filename extensions match the specified
comma-separated list of EXTENSIONS, same as --include='*.ext' for
each `ext' in EXTENSIONS. When `ext' is preceded by a `!' or a
`^', skip files whose filename extensions matches `ext', same as
--exclude='*.ext'. This option may be repeated and may be combined
with options -g, -M and -t to expand the recursive search.
-t TYPES, --file-type=TYPES
Search only files associated with TYPES, a comma-separated list of
file types. Each file type corresponds to a set of filename
extensions passed to option -O and filenames passed to option -g.
For capitalized file types, the search is expanded to include files
with matching file signature magic bytes, as if passed to option
-M. When a type is preceded by a `!' or a `^', excludes files of
the specified type. This option may be repeated.
-g GLOBS, --glob=GLOBS
Search only files whose name matches the specified comma-separated
list of GLOBS, same as --include='glob' for each `glob' in GLOBS.
When a `glob' is preceded by a `!' or a `^', skip files whose name
matches `glob', same as --exclude='glob'. When `glob' contains a
`/', full pathnames are matched. Otherwise basenames are matched.
When `glob' ends with a `/', directories are matched, same as
--include-dir='glob' and --exclude-dir='glob'. A leading `/'
matches the working directory. This option may be repeated and may
be combined with options -M, -O and -t to expand searches. See
`ugrep --help globs' and `man ugrep' section GLOBBING for details.
--stats
Output statistics on the number of files and directories searched,
and the inclusion and exclusion constraints applied.
#!
から始まるすべてのファイルを再帰的にリストするシバン:
ug -l -M'#!' ''
#
ではないが#!
シバン:
ug -l -M'#' -M'^#!' ''
-tPython
を使用して、すべてのpythonファイル(extension .py
またはshebang)を再帰的にリストするには:
ug -l -tPython ''
すべての非シェルファイルを-t^Shell
で再帰的にリストするには:
ug -l -t^Shell ''
- で非表示ファイルを含むインポートステートメントを持つpythonファイル(extension .py
またはshebang)を再帰的にリストします-.
:
ug -l. -tPython -f python/imports
?目次に戻る
-Z[best][+-~][MAX], --fuzzy=[best][+-~][MAX]
Fuzzy mode: report approximate pattern matches within MAX errors.
The default is -Z1: one deletion, insertion or substitution is
allowed. If `+`, `-' and/or `~' is specified, then `+' allows
insertions, `-' allows deletions and `~' allows substitutions. For
example, -Z+~3 allows up to three insertions or substitutions, but
no deletions. If `best' is specified, then only the best matching
lines are output with the lowest cost per file. Option -Zbest
requires two passes over a file and cannot be used with standard
input or Boolean queries. Option --sort=best orders matching files
by best match. The first character of an approximate match always
matches a character at the beginning of the pattern. To fuzzy
match the first character, replace it with a `.' or `.?'. Option
-U applies fuzzy matching to ASCII and bytes instead of Unicode
text. No whitespace may be given between -Z and its argument.
パターンの始まりは、常に短いパターンの多くの誤った「ランダム化」マッチを防ぐための実用的な戦略として、おおよその一致の最初のキャラクターと常に一致します。これにより、検索速度も大幅に向上します。最初の文字をオプションでオプションにして、例えばp?attern
またはパターンの開始としてドットを使用して、幅広い文字を一致させます(ただし、これは遅いです)。
ラインフィード( n
)およびnul(