[ 읽어보기 | 사용자 가이드 | 인덱싱 | 벤치마크 | Q&A ]
옵션 -Q는 입력과 동시에 파일을 검색하기 위한 쿼리 TUI를 엽니다!
ugrep은 빠르고 사용자 친화적이며 사용자가 원했던 수많은 새로운 기능을 갖추고 있습니다.
내장 도움말이 있는 대화형 TUI, AND/OR/NOT 패턴을 사용한 Google과 유사한 검색, 퍼지 검색, 검색(중첩) zip/7z/tar/pax/cpio 아카이브, 타르볼 및 압축 파일 gz/Z/bz/가 포함되어 있습니다. bz2/lzma/xz/lz4/zstd/brotli, 검색 및 hexdump 바이너리 파일, PDF, doc, docx와 같은 문서 검색 및 JSON, XML, CSV 또는 사용자의 출력 나만의 맞춤형 형식
특별한 명령줄 옵션 없이 여러 줄 패턴 일치를 사용하는 유니코드 확장 정규식 패턴 구문
느리고 콜드 파일 시스템 검색 속도를 높이는 파일 인덱서 포함
실제로 호환되지 않는 명령줄을 구현할 때 "grep 대안" 또는 "대체"라고 주장하는 다른 유명한 grep과 달리 GNU grep에 대한 진정한 드롭인 대체( ug
grep
, egrep
및 fgrep
에 복사하거나 심볼릭 링크한다고 가정). 옵션을 사용하고 호환되지 않는 정규식 일치자를 사용합니다. 즉, ugrep이 모든 정규식을 지원하는 경우 Perl 정규식과 POSIX BRE(grep) 및 ERE(egrep)만 사용합니다. 모드
벤치마크에 따르면 ugrep은 고성능 DFA 기반 정규식 일치기 RE/flex를 사용하는 가장 빠른 grep 중 하나입니다.
ugrep에 개선되거나 추가되어야 할 사항이 있으면 알려주세요!
최우선 순위는 ugrep에 버그가 없고 신뢰할 수 있는지 지속적으로 확인하는 품질 보증입니다.
ugrep을 더욱 빠르게 실행합니다(예: #432, #421 참조).
재현 가능한 성능 결과 공유
ug
는 작업 디렉터리 또는 홈 디렉터리에 있는 기본 설정과 함께 선택적 .ugrep 구성 파일을 로드하는 대화형 사용을 위한 것입니다. ug+
PDF, 문서, 전자책, 이미지 메타데이터도 검색합니다.
ugrep
구성 파일이 없는 GNU grep과 같은 일괄 사용을 위한 ugrep, ugrep+
PDF, 문서, 전자책, 이미지 메타데이터도 검색합니다.
기본적으로 유니코드 패턴과 일치하고 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
.
기본 설정과 함께 .ugrep 구성 파일을 로드하는 대화형 사용을 위한 ug
명령에서 사용되는 사용자 정의 가능한 구성 파일을 사용하여 사용자에게 친숙함
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, e-book 등을 검색하세요.
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자)의 컨텍스트로 모든 일치 항목을 맞추고, -nk
줄과 열 번호를 출력합니다.
지정된 Levenshtein 거리 내에서 퍼지 검색을 사용하여 대략적인 패턴 일치를 찾습니다.
ug -Z PATTERN ... ug -Z3 PATTTERN ...
-Zn
최대 n
추가, 누락 또는 대체 문자와 일치하고, -Z+n
최대 n
추가 문자와 일치하며, -Zn
최대 n
누락 문자와 일치하고 -Z~n
최대 n
대체 문자와 일치합니다. -Z
기본값은 -Z1
입니다.
정규식(또는 -F
사용한 고정 문자열)을 사용한 Fzf 유사 검색, -Z+4
사용한 최대 4개의 추가 문자 및 -w
를 사용한 단어만 사용한 퍼지 일치, 파일 전체 부울 검색에 -%%
사용
ug -Q -%% -l -w -Z+4 --sort=best
-l
TUI에 일치하는 파일을 나열합니다. TAB
누른 다음 ALT-y
눌러 파일을 보고, SHIFT-TAB
과 Alt-l
눌러 돌아가서 가장 일치하는 항목별로 정렬된 일치 파일 목록을 봅니다.
바이너리 파일을 검색하고 바이너리 패턴 일치(바이트 패턴의 경우 유니코드 텍스트 또는 -U
)로 16진수 덤프를 표시합니다.
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
없이 4
16진수 열을 표시하며 일치 전후에 하나의 추가 16진수 라인 C1
표시합니다.
파일 형식 또는 파일 "매직 바이트"로 검색하려면 파일을 포함하거나 ^
를 사용하여 제외하세요.
ug -t TYPE PATTERN ... ug -t ^TYPE PATTERN ...
ug -M 'MAGIC' PATTERN ... ug -M '^MAGIC' PATTERN ...
gitignore 스타일 glob과 일치하는 검색을 위해 파일 및 디렉터리를 포함하거나 ^
를 사용하여 제외합니다.
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 ...
ug
사용하여 항상 무시하려면 .ugrep에 ignore-files
지정하세요. 원하는 대로 추가 ignore-files=...
추가하십시오.
부정 패턴을 제외한 패턴 검색('이것은 일치하지만 저것은 아님')
ug -e PATTERN -N NOTPATTERN ... ug -e '[0-9]+' -N 123 ...
사전 정의된 정규식 패턴을 사용하여 소스 코드, 자바스크립트, 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
와 함께 선택적으로 사용할 형식 %
필드에 대한 도움말을 표시합니다.
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
ugrep
과 동일하지만 작업 디렉터리나 홈 디렉터리에 있는 경우 구성 파일 .ugrep도 로드합니다.
Winget으로 설치 winget install Genivia.ugrep
또는 Chocolatey choco install ugrep
로 설치하세요.
또는 Scoop scoop install ugrep
사용하여 설치합니다.
또는 https://github.com/Genivia/ugrep/releases에서 모든 기능을 갖춘 ugrep.exe
실행 파일을 릴리스 아티팩트로 다운로드하세요. 압축된 릴리스에는 기본 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
과 같은 유니코드 줄 바꿈을 일치시킬 수 있습니다. $ 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
실행하세요. 부스트: 시작하기를 참조하세요.
옵션 -z
(압축 파일 및 아카이브 검색)에는 zlib 라이브러리가 설치되어 있어야 합니다. 대부분의 시스템에 설치됩니다. 그렇지 않은 경우 예를 들어 sudo apt-get install -y libz-dev
사용하여 설치하십시오. .bz
및 .bz2
파일을 검색하려면 bzip2 라이브러리를 설치하십시오(권장). 예를 들어 sudo apt-get install -y libbz2-dev
사용하십시오. .lzma
및 .xz
파일을 검색하려면 lzma 라이브러리를 설치합니다(권장). 예를 들어 sudo apt-get install -y liblzma-dev
사용합니다. .lz4
파일을 검색하려면 lz4 라이브러리를 설치하십시오(선택 사항, 필수는 아님)(예: sudo apt-get install -y liblz4-dev
). .zst
파일을 검색하려면 sudo apt-get install -y libzstd-dev
와 같이 zstd 라이브러리를 설치합니다(선택 사항, 필수는 아님). .br
파일을 검색하려면 sudo apt-get install -y libbrotli-dev
와 같이 brotli 라이브러리를 설치합니다(선택 사항, 필수는 아님). .bz3
파일을 검색하려면 bzip3 라이브러리를 설치하십시오(선택 사항, 필수는 아님)(예: sudo apt-get install -y bzip3
).
팁
시스템에 bzip2
와 같은 명령줄 유틸리티가 있더라도 반드시 libbz2
와 같은 개발 라이브러리가 설치되어 있다는 의미는 아닙니다. 개발 라이브러리를 설치해야 합니다.
일부 Linux 시스템은 /usr/local/lib
에서 동적 라이브러리를 로드하도록 구성되지 않아 ugrep
실행 시 라이브러리 로드 오류가 발생할 수 있습니다. 이 문제를 해결하려면 ~/.bashrc
파일에 export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib"
추가하세요. 또는 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 이상에서는 "note: 매개변수 전달 인수 ... GCC 7.1에서 변경됨" 과 같은 경고가 발생할 수 있습니다. 이러한 경고는 무시해야 합니다.
Ubuntu 컨테이너에 ugrep
빌드하기 위해 Dockerfile이 포함되어 있습니다.
개발자는 ThreadSanitizer를 사용하여 데이터 경합을 감지하는 등 중요한 변경 사항을 적용할 때 새니타이저를 사용하여 ugrep 코드를 확인할 수 있습니다.
$ ./build.sh CXXFLAGS='-fsanitize=thread -O1 -g'
clang AddressSanitizer, MemorySanitizer, ThreadSanitizer 및 UndefineBehaviorSanitizer를 사용하여 ugrep
확인했습니다. 이러한 옵션은 상당한 런타임 오버헤드를 발생시키므로 최종 빌드에 사용하면 안 됩니다.
? 목차로 돌아가기
ugrep 및 ug 명령은 기본적으로 바이너리 파일을 검색하고 .gitignore 지정된 파일을 무시하지 않습니다. 따라서 -I
및 --ignore-files
옵션을 사용하지 않는 한 재귀 검색 성능 비교가 의미가 없습니다. 이러한 옵션을 ug 의 기본값으로 설정하려면 .ugrep 구성 파일에 ignore-binary
및 ignore-files
추가하기만 하면 됩니다.
최신 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
은 검색 디렉터리를 세 수준(작업 디렉터리 및 그 아래 최대 두 수준)으로 제한합니다.
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 마스터 브랜치에서 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 유니코드 패턴을 그대로 사용하려면 -U
옵션을 사용하여 전체 유니코드 패턴 일치를 비활성화하세요.
실제로 -U
, -Y
, - 옵션을 사용하여 ugrep
실행합니다 -.
--sort
사용하면 egrep
과 똑같이 작동하여 ASCII/LATIN1 비UTF 유니코드 패턴만 일치시키고 빈 패턴을 무시하는 대신 숨겨진 파일을 일치시키고 검색할 수 있습니다. grep 동등성을 참조하세요.
-U
, -Y
, -.
원하는 대로 --sort
또는 다른 옵션을 포함합니다.
또는 ugrep
해당 이름에 복사하여 grep
, egrep
및 fgrep
실행 파일을 생성할 수 있습니다. ugrep
(또는 ugrep.exe
) 실행 파일이 grep
( grep.exe
), egrep
( egrep.exe
), fgrep
( fgrep.exe
)로 복사되면 옵션 -U
, -Y
및 -.
grep
의 경우 -G
, egrep
의 경우 -E
, fgrep
의 경우 -F
와 함께 자동으로 활성화됩니다. 또한 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
유니코드 와이드 문자 패턴 일치를 비활성화합니다. 예를 들어 xa3
패턴은 UTF-8 시퀀스 C2 A3으로 표시되는 유니코드 코드 포인트 U+00A3 대신 바이트 A3과 일치합니다. 기본적으로 ugrep에서는 xa3
U+00A3과 일치합니다. 텍스트 패턴 검색에는 -U
사용하지 않는 것이 좋습니다. 바이너리 검색에만 사용하거나 이러한 파일을 바이너리로 보고하지 않고(ugrep v3.5.0부터) latin-1(iso-8859-1) 파일을 검색하는 경우에만 사용하는 것이 좋습니다.-Y
빈 일치를 가능하게 합니다. 예를 들어 패턴 a*
는 일련의 a
's 대신 모든 행과 일치합니다. 기본적으로 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 아카이브를 검색합니다.NUM
레벨까지 -z
및 --zmax=NUM
사용하여 아카이브 내에 반복적으로 저장된 cpio, jar, pax, tar, zip 및 7z 아카이브를 검색합니다.--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
가 지정되고 하나 이상의 -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 정규식)는 PCRE와 유사한 구문과 빠른 Perl 정규식 일치를 위해 PCRE2 또는 Boost.Regex 라이브러리를 사용하는 역참조( --format
포함) 및 Lookbehind를 지원합니다.-b
옵션 -o
또는 -u
옵션을 사용하면 ugrep는 GNU/BSD grep에서 보고한 일치하는 줄 시작의 바이트 오프셋 대신 패턴 일치의 정확한 바이트 오프셋을 표시합니다.-u
, --ungroup
을 사용하면 한 줄에 여러 일치 항목을 그룹화하지 않습니다. 이 옵션은 행의 추가 패턴 일치마다 일치하는 입력 행을 다시 표시합니다. 이 옵션은 -c
옵션과 함께 파일당 일치하는 행 수 대신 파일당 총 패턴 일치 수를 보고하는 데 특히 유용합니다.-Y
빈 패턴 일치를 활성화합니다. 빈 일치 패턴을 사용한 Grepping은 이상하며 GNU grep과 BSD grep을 사용하면 다른 결과를 제공합니다. 기본적으로 빈 일치 항목은 ugrep 에 의해 출력되지 않으므로 "무작위" 결과를 생성할 수 있는 실수를 방지할 수 있습니다. 예를 들어, GNU/BSD grep을 사용하면 패턴 a*
입력의 모든 줄과 일치하고 실제로 xyz
와 세 번 일치합니다( x
, y
및 z
앞과 사이의 빈 전환). 빈 일치를 허용하려면 ugrep 옵션 -Y
가 필요합니다. ^h*$
와 같이 ^
로 시작하거나 $
로 끝나는 패턴은 비어 있는 것과 일치합니다. 이러한 패턴은 -Y
옵션을 자동으로 활성화합니다.-D, --devices=ACTION
기본적으로 read
대신 skip
입니다. 이는 기본적으로 장치를 read
GNU/BSD grep에서 발생할 수 있는 것처럼 반복적으로 검색되는 디렉터리의 명명된 파이프에 예기치 않게 중단되는 것을 방지합니다.-d, --directories=ACTION
기본적으로 read
대신 skip
입니다. 기본적으로 명령줄에 지정된 디렉터리는 검색되지만 하위 디렉터리까지 반복적으로 더 깊게 검색되지는 않습니다.X
입력을 건너뛰어 검색에서 X
제거하는 형식 (?^X)
의 패턴인 부정 패턴 -N PATTERN
제공합니다. 예를 들어, 부정 패턴을 사용하면 소스 코드에서 식별자를 검색할 때 문자열과 주석을 건너뛰고 문자열과 주석에 없는 일치 항목을 찾을 수 있습니다. 사전 정의된 zap
패턴은 네거티브 패턴을 사용합니다. 예를 들어 -f cpp/zap_comments
사용하여 C++ 주석의 패턴 일치를 무시합니다.GREP_OPTIONS
환경 변수를 무시합니다. ugrep 의 동작은 모든 시스템에서 이식 가능하고 예측 가능해야 하기 때문입니다. 또한 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
)를 따르지 않고 반복적으로 단어( -w
)로 main
을 검색하려면 일치하는 줄 옆에 일치하는 줄( -n
) 및 열( -k
) 번호를 표시합니다.
ug -r -nkw main myproject
동일하지만 더 깊게 반복되지 않고 myproject
만 검색합니다(디렉터리 인수는 기본적으로 한 수준에서 검색됩니다).
ug -nkw main myproject
동일하지만 -2
사용하여 myproject
와 한 하위 디렉터리 수준 더 깊은(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
인수에 따라 검색되는 파일 이름 확장자 및 "매직 바이트"(shebangs) 목록을 표시하려면 다음을 수행하십시오.
ug -tlist
-l
사용하여 확장 및 shebang을 기반으로 모든 쉘 파일을 재귀적으로 나열하려면 다음을 수행하십시오( ''
는 비어 있지 않은 파일과 일치함).
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
사용하면 심볼릭 링크도 건너뜁니다. 옵션 -tc,c++
사용하여 c/c ++ 파일을 선택 하여이 쿼리를 개선하고 -R
있는 파일 및 디렉토리에 Symlinks를 포함시킵니다.
ug -R -tc,c++ -nkw 'main' -f c/zap_strings -f c/zap_comments myproject
식별자 main
만 찾고 함수 main(
으로 만 찾지 않으려면 어떨까요?이 경우 원치 않는 mainh*(
패턴 일치 :
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'
파이프로 결과를 필터링하는 것은 일반적으로 일부 검색 도구가 사용하는 논리를 사용하는 것보다 쉽습니다. 이 접근법은 유틸리티를 간단하게 유지하고보다 복잡한 작업을 위해 결합하여 사용하기 위해 유닉스 정신을 따릅니다.
문자열과 의견을 건너 뛰는 동안 Java 소스 코드에있는 모든 식별자의 정렬 된 목록을 작성하겠습니다.
ug -R -tjava -f java/names myproject | sort -u
이것은 patterns/java/names
로 정의 된 Regex p{JavaIdentifierStart}p{JavaIdentifierPart}*
를 사용하여 Java Unicode 식별자와 일치합니다.
전통적인 GREP 및 GREP와 같은 도구를 사용하면 기능 qsort
정의하는 C/C ++ 소스 파일을 재귀 적으로 검색하는 데 큰 노력을 기울여 다음과 같은 것이 필요합니다.
ug -R --include='*.c' --include='*.cpp' '^([ t]*[[:word:]:*&]+)+[ t]+qsort[ t]*([^;n]+$' myproject
다행스럽게도 UGREP를 사용하면 옵션 -Oc,cpp
사용하고 모든 기능 정의를 생성하기 위해 도구와 함께 설치된 사전 정의 된 패턴 functions
사용하여 Extension .c
또는 .cpp
가있는 파일에서 모든 기능 정의를 선택할 수 있습니다. 그런 다음 원하는 것을 선택합니다.
ug -R -Oc,cpp -nk -f c/functions | ug 'qsort'
-tc,c++
사용하여 c/c ++ 파일을 선택할 수 있지만 .c
및 .cpp
파일 만 검색하려는 경우 헤더 파일도 포함됩니다.
또한 .gitignore
에 정의 된 파일 및 디렉토리가 검색되는 것을 건너 뛸 수 있습니다. 그렇게하기 위해 우리는 --ignore-files
파일을 찾을 때 .gitignore
의 글로그와 일치하는 재귀 검색에서 파일과 디렉토리를 제외하기 위해 다음을 사용합니다 .gitignore
ug -R -tc++ --ignore-files -f c++/defines
이는 #define
line ( -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.*'
C/C ++ 소스 코드 파일의 모든 #define FOO...
매크로의 색상이 밝은 목록을 반환하고 .gitignore
에 정의 된 파일을 건너 뜁니다.
--exclude
의 보완은 --include
되지 않습니다. 제외는 항상 포함보다 우선하기 때문에 --include-from='.gitignore'
로 무시되는 파일을 안정적으로 나열 할 수는 없습니다. --include
로 명시 적으로 지정된 파일 만 명시 --include-dir
으로 지정된 디렉토리 만 방문됩니다. --include-from
에서 각각 --include
및 --include-dir
에 추가 할 파일과 디렉토리로 간주되는 Globs의 목록. 이는이 파일에 디렉토리 이름 및 디렉토리 경로가 명시 적으로 나열되지 않으면 --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
명령과 동일합니다. Working Directory에 있거나 찾을 수없는 경우 홈 디렉토리에서 구성 파일 .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
검색 후 사용 된 구성 파일을 표시합니다.
명명 된 구성 파일은 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
-
인 경우 표준 출력에 기록됩니다.
또는 구성 파일이 수동으로 생성되거나 수정 될 수 있습니다. 구성 파일에는 하나 이상의 config[=FILE]
포함되어있어 사양 FILE
간접적으로로드 할 수 있지만 재귀 구성로드는 금지됩니다. 구성 파일을 제조하는 가장 간단한 방법은 파일 상단에 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
파일을 입력하거나 편집하거나 Gitignore 스타일의 글로벌 패턴의 쉼표로 구분 된 목록 인 Globs와 일치합니다. ESC를 누르면 쿼리 패턴 프롬프트에 대한 제어를 반환합니다 (글로그가 저장 됨). 지구가 앞에있을 때 !
또는 a ^
, 글로그가 /
전체 경로 이름이 일치 할 때 이름이 글로벌과 일치하는 파일을 건너 뜁니다. 그렇지 않으면베이스 이름이 일치합니다. 글로그가 /
로 끝나면 디렉토리가 일치합니다.Q>
(정상), F>
(고정 문자열), G>
(기본 Regex), P>
(perl matching) 및 Z>
(퍼지 매칭) 사이를 전환합니다. --glob=
프롬프트가 표시되면 쉼표로 구분 된 Gitignore 스타일의 글로벌 패턴 목록이 입력 될 수 있습니다. ESC를 누르면 제어를 패턴 프롬프트로 반환합니다.--view
로 지정된 호출기가있는 파일을 봅니다.--view=COMMAND
으로 지정할 수 있습니다. 그렇지 않으면 PAGER
또는 EDITOR
환경 변수는 CTRL-Y로 명령을 호출하는 데 사용됩니다. 이 기능을 사용하려면 출력에서 파일 이름을 활성화하고 표시해야합니다.--color
옵션에 따라 색상이됩니다.DELAY
값을 지정하지만 각 키가 누르면 검색을 반복적으로 시작하고 취소 한 결과 값이 낮을 수 있습니다.--heading
활성화됩니다. Alt-+를 눌러 제목을 끄십시오.쿼리 TUI 키 매핑 :
키 (s) | 기능 |
---|---|
Alt-key | key 에 해당하는 ugrep 명령 줄 옵션을 전환합니다 |
Alt-/ xxxx / | 유니 코드 헥스 코드 포인트 U+XXXX를 삽입하십시오 |
Esc Ctrl-C | 돌아가거나 나가십시오 |
Ctrl-Q | 빠른 종료 및 선택 모드에서 선택한 결과를 출력 |
Tab | 화면 상단에 표시된 파일의 디렉토리 또는 파일을 선택한 chdir |
Shift-Tab | chdir one level Up 또는 Nexect 파일 |
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 | 커서를 선의 시작 부분으로 이동하십시오 |
End Ctrl-E | 커서를 라인 끝으로 이동하십시오 |
Ctrl-K | 커서 후에 삭제하십시오 |
Ctrl-L | 새로 고침 화면 |
Ctrl-O + key | Alt-key 와 동일한 key 에 해당하는 ugrep 명령 줄 옵션 토글 |
Ctrl-R F4 | 북마크로 이동하십시오 |
Ctrl-S | 다음 Dir/File/Context로 이동하십시오 |
Ctrl-T F5 | 토글 스플릿 화면 ( --split 스플릿 스크린 tui를 시작합니다) |
Ctrl-U | 커서 전에 삭제하십시오 |
Ctrl-V | 구두 성격 |
Ctrl-W | 하나의 Dir/File/Context를 뒤로 이동하십시오 |
Ctrl-X F3 | 서점을 설정하십시오 |
Ctrl-Y F2 | 화면 상단에 표시된 파일보기 또는 편집 |
Ctrl-Z F1 | 도움과 옵션을보십시오 |
Ctrl-^ | chdir는 시작 작업 디렉토리로 돌아갑니다 |
Ctrl-] | 토글 색상/모노 |
Ctrl- | 프로세스 종료 |
작업 디렉토리에서 파일을 대화식으로 검색하려면 다음과 같습니다.
ug -Q
동일하지만 C ++ 파일로만 제한되어 있으며 .gitignore
파일을 무시합니다.
ug -Q -tc++ --ignore-files
작업 디렉토리의 모든 makefiles를 대화식으로 검색하려면 다음과 같습니다.
ug -Q -g 'Makefile*' -g 'makefile*'
동일하지만 최대 2 개의 디렉토리 레벨 (작동 및 1 개의 하위 디렉토리 레벨)의 경우 :
ug -Q -2 -g 'Makefile*' -g 'makefile*'
main.cpp
의 내용을 대화식으로보고 검색하려면 -y
컨텍스트로 비일 지정선을 표시합니다.
ug -Q -y main.cpp
검색 패턴 TODO
및 5 줄의 일치 컨텍스트부터 main.cpp
대화식으로 검색하려면 (컨텍스트는 대화식으로 활성화되고 비활성화 될 수 있으므로, 이렇게하면 2 줄의 기본 컨텍스트 크기도 무시됩니다.
ug -Q -C5 -e TODO main.cpp
아카이브의 내용을보고 검색하려면 (예 : Zip, Tarball) :
ug -Q -z archive.tar.gz
Ugrep Query 선택 모드를 사용하여 project.zip
에서 unzip
에서 파일을 대화식으로 선택하려면 Enter를 누르기 위해 Enter를 누릅니다) :
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 '' .
디렉토리에 비어 있지 않은 파일을 모두 나열하려면 mydir
이지만 더 깊지 않습니다 (파일 인수가 제공되기 때문에).
ug -l '' mydir
Symlinks를 따르는 동안 디렉토리 mydir
및 Deeper에 모든 비어 있지 않은 파일을 나열하려면 :
ug -R -l '' mydir
지정된 경로에 모든 비어 있지 않은 파일을 재귀 적으로 나열하려면 하위 디렉토리 만 방문하는 동안 IE 디렉토리 mydir/
및 한 수준의 더 깊은 mydir/*/
방문이 방문됩니다 ( -2 -l
-l2
로 축약 할 수 있습니다).
ug -2 -l '' mydir
mydir
와 같은 명령 줄에서 제외)는 상징적 링크를 따르지 않고 디렉토리 mydir
에 모든 비어 있지 않은 파일을 재귀 적으로 나열합니다.
ug -rl '' mydir
텍스트 CPP
와 일치하는 모든 makefiles를 재귀 적으로 나열하려면 :
ug -l -tmake 'CPP'
모든 Makefile.*
일치하는 bin_PROGRAMS
:
ug -l -g'Makefile.*' 'bin_PROGRAMS'
extension .Sh가있는 모든 비어 있지 않은 파일을 재귀 적으로 나열하려면 -Osh
있습니다.
ug -l -Osh ''
확장자와 Shebangs를 기반으로 모든 쉘 스크립트를 다시 나열하려면 -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 합니다 (표준 Regex Escapes 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
패턴이 여전히 일치하는 줄에 표시 될 수 있음)를 제외하고는 출력에서 색상이 밝아집니다. 소환자는 겹칠 수 있습니다. 이 경우 첫 번째 일치하는 서브 패턴 만 색상이 밝아집니다.
서브 패턴이 신형 일과 일치 할 때 여러 줄이 일치 할 수 있습니다. 그러나 한 가지 예외가 있습니다. (?=X)
룩이 X
여러 줄에 걸쳐 일치하지 않을 수 있습니다.
빈 패턴은 모든 선 (GREP 표준)과 일치합니다. 따라서 -% 'x|""|y'
모든 것을 일치시키고 x
와 y
는 색상이 밝아지지 않습니다. 옵션 -y
예를 들어 모든 줄을 컨텍스트로 표시하는 데 사용해야합니다. 예를 들어 -y 'x|y'
.
FZF와 같은 대화식 쿼리 (Fuzzy Matching이있는 고정 문자열의 부울 검색은 -w
가있는 단어에서 -Z+4
와 일치하는 최대 4 개의 추가 문자를 허용 할 수 있도록 탭 및 Alt -Y를 눌러 일치하는 파일을보십시오. Shift-Tab 및 Alt-L을 눌러 일치하는 파일 목록으로 돌아갑니다.
ug -Q -%% -l -w -F -Z+4 --sort=best
옵션 --files
파일이있는 파일의 어느 곳에서나 hot
과 dog
모두 포함 된 모든 파일을 재귀 적으로 찾으려면 :
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
TODO
또는 FIXME
있는 라인을 위해 myfile.cpp
검색하려면 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 GREP 옵션보다 더 강력한 부울 쿼리 옵션에 대해서는 -%, -%%, -및 -및 -아니오의 부울 쿼리 패턴도 참조하십시오.
myfile.sh
파일에 줄을 표시하려면 ^[ t]*#
: 일치하지 않습니다.
ug -v '^[ t]*#' myfile.sh
FIXME
및 urgent
라인을 검색하지만 Scotty
myfile.cpp
.
ugrep FIXME myfile.cpp | ugrep urgent | ugrep -v Scotty
동일하지만 부울 쿼리에는 -%
사용합니다.
ug -% 'FIXME urgent -Scotty' myfile.cpp
네거티브 패턴 d+
사용하여 0
으로 시작하지 않고 555
제외하는 패턴 0d+
사용하여 소수점을 검색합니다.
ug -e 'd+' -N '0d+' -N 555 myfile.cpp
"음수 패턴" -N '/<display>'
를 사용하여 파일 myfile.py
에서 display
일치시키지 않고 disp
로 시작하는 단어를 검색하려면 -N
일치하는 것을 건너 뛰는 추가 음수 패턴을 지정합니다.
ug -e '<disp' -N '<display>' myfile.py
myfile.py
에서 단어 display
있는 줄을 검색하려면이 단어를 문자열과 주석으로 건너 뜁니다. 여기서 -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 (Byte Order Mark)으로 시작한다고 가정 할 때이 옵션을 검색하는 데 필요하지 않습니다. 다른 파일 인코딩은 옵션 --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 |
MacRoman (CR = Newline) | MACROMAN |
EBCDIC | EBCDIC |
DOS 코드 페이지 437 | CP437 |
DOS 코드 페이지 850 | CP850 |
DOS 코드 페이지 858 | CP858 |
Windows Code Page 1250 | CP1250 |
Windows Code Page 1251 | CP1251 |
Windows Code Page 1252 | CP1252 |
Windows Code Page 1253 | CP1253 |
Windows Code Page 1254 | CP1254 |
Windows Code Page 1255 | CP1255 |
Windows Code Page 1256 | CP1256 |
Windows Code Page 1257 | CP1257 |
Windows Code Page 1258 | CP1258 |
KOI8-R | KOI8-R |
KOI8-U | KOI8-U |
KOI8-RU | KOI8-RU |
REGEX 패턴은 항상 UTF-8에 지정되어 있습니다 (ASCII 포함). 이진 패턴이있는 이진 파일을 검색하려면 -u, -w 및 -x로 이진 파일을 검색하고 표시하는 것을 참조하십시오.
ASCII (예 : 7 비트) 인 모든 파일을 재귀 적으로 나열하려면 다음과 같습니다.
ug -L '[^[:ascii:]]'
비 ASCII, IE UTF-8, UTF-16 및 UTF-32 파일이 아닌 모든 파일을 재귀 적으로 나열하려면 ASCII 비 유니 코드 문자 (U+0080 이상)가있는 파일 :
ug -l '[^[:ascii:]]'
파일에 비 ASCII 유니 코드가 포함되어 있는지 확인하려면 (U+0080 이상) :
ug -q '[^[:ascii:]]' myfile && echo "contains Unicode"
파일에서 유효하지 않은 유니 코드 문자를 제거하려면 이진 데이터가 감지되고 거부되고 신형이 추가되어 -o
작동하지 않을 수 있지만 --format="%o%
바이너리를 확인하지 않고"그대로 "일치를 복사합니다. ):
ug "[p{Unicode}n]" --format="%o" badfile.txt
모든 코드 포인트와 일치함으로써 유효한 UTF 컨텐츠 (예 : 유효한 유니 코드 범위를 벗어난 UTF-8/16/32 코드 포인트가 포함 된 파일)가 잘못된 UTF 컨텐츠 (예 : 유효하지 않은 UTF-8 바이트 시퀀스 또는 파일)를 재귀 적으로 나열합니다 .
그리고 부정적인 패턴 -N 'p{Unicode}'
를 사용하여 각 유효한 유니 코드 문자를 무시합니다.
ug -l -e '.' -N 'p{Unicode}'
웃고있는 얼굴 이모티콘을 포함하는 선을 표시하려면 :
ug '[?-?]' emojis.txt
유니 코드 문자 범위를 선택하기 위해 x{hhhh}
사용하여 동일한 결과를 얻습니다.
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
이 파일이 UTF-16 BOM이 없을 때 UTF16Lorem.txt를 검색하려면 --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 문자와 일치하는 패턴과 일치 할 수 있습니다. 옵션 -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
사전 정의 된 c/comments
패턴을 -fc/comments
로 사용하여 c/c ++ 주석을 일치시키기 위해 옵션 -o
사용하여 일치하는 부분으로 제한됩니다.
ug -of c/comments myfile.cpp
sed -n '/begin/,/end/p'
와 동일 : Lazy Repetition을 사용하여 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.
일치하는 줄 전후에 두 줄의 컨텍스트를 표시하려면 :
ug -C2 'FIXME' myfile.cpp
일치하는 라인 후 3 줄의 컨텍스트를 표시하려면 :
ug -A3 'FIXME.*' myfile.cpp:
C 함수 정의와 일치하는 각 선 앞에 한 줄의 컨텍스트를 표시하려면 (C 이름은 비 유니 코드입니다) :
ug -B1 -f c/functions myfile.c
C ++ 함수 정의가있는 각 일치 라인 앞에 한 줄의 컨텍스트를 표시하려면 (C ++ 이름은 유니 코드 일 수 있음) :
ug -B1 -f c++/functions myfile.cpp
비 일치 라인을 -y
와 일치시키는 라인을 일치시키기위한 컨텍스트로 표시합니다.
ug -y -f c++/functions myfile.cpp
한 줄의 헥스 덤프 컨텍스트와 일치하는 라인의 헥트럼을 표시하려면 다음과 같습니다.
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
로 나열됩니다. 이 목록은 확립 된 파일 이름 확장 및 "매직 바이트"를 기반으로합니다. 나열되지 않은 파일 유형이있는 경우 옵션 -O
및/또는 -M
사용하십시오. alias alias ugft='ugrep -Oft'
파일 이름 접미사 .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 ''
Shell Filename 확장이없는 쉘 Shebang이있는 모든 쉘 파일을 재귀 적으로 나열하려면 다음과 같습니다.
ug -l -tShell -t^shell ''
C/C ++ 주석에서 FIXME
있는 라인을 검색하려면 멀티 라인 문자열에서 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
로 검색됩니다. 일치하는 아카이브의 일반 파일은 {
및 }
브레이스에 포함 된 아카이브 경로 이름이 출력됩니다. 지원되는 TAR 형식은 V7, Ustar, GNU, Oldgnu 및 Pax입니다. 지원되는 CPIO 형식은 ODC, NewC 및 CRC입니다. 지원되지 않는 것은 쓸모 없게 불가능하지 않은 오래된 바이너리 CPIO 형식입니다. 아카이브 형식 CPIO, TAR 및 PAX는 파일 이름 접미사와 무관하게 컨텐츠를 기반으로 옵션 -z
로 자동 인식됩니다.
기본적으로 지퍼 아카이브 내에 저장된 압축되지 않은 아카이브도 검색됩니다 : ZIP 및 7Z 아카이브에 저장된 모든 CPIO, PAX 및 TAR 파일은 자동으로 인식 및 검색됩니다. 그러나 기본적으로 아카이브 내에 저장된 압축 파일은 인식되지 않습니다. 예를 들어 TAR 파일 내에 저장된 ZIP 파일은 검색되지 않고 오히려 압축 된 파일 및 아카이브는 마치 탈 감축하지 않고 이진 파일 인 것처럼 검색됩니다.
압축 된 파일과 아카이브가 최대 NUM
레벨의 깊은 깊이있는 아카이브를 검색하는 아카이브를 검색하기 위해 --zmax=NUM
지정하십시오. NUM
의 값은 최대 99 개의 둥지가있는 아카이브를 확장하기 위해 최대 99 개의 감압 및 해제 단계의 경우 1에서 99까지입니다. 더 큰 --zmax=NUM
값 성능 저하. TAR 파일에 저장된 ZIP 파일 검색과 같은 대부분의 실제 사용 사례에 대해 --zmax=2
충분하기 때문에 99가 필요하지 않을 것입니다.
옵션 -z
옵션 -g
, -O
, -M
, 또는 -t
, 아카이브 및 파일 이름 선택 기준 (글로벌, 확장, 마술 바이트 또는 파일 유형)과 일치하는 압축 및 압축 및 압축되지 않은 파일과 함께 사용되는 경우에만 검색됩니다. 예를 들어, ugrep -r -z -tc++
main.cpp
및 zip 및 tar archives main.cpp
같은 C ++ 파일을 검색합니다. 검색에도 포함되어있을 때 main.cpp.gz
및 main.cpp.xz
와 같은 압축 된 C ++ 파일도 포함되어 있습니다. 또한 CPIO, PAX, TAR, ZIP 및 7Z 아카이브는 main.cpp
와 같이 포함하는 C ++ 파일을 검색합니다. 사용 옵션 --stats
사용하여 재귀 검색 및 아카이브 내용을 검색 할 때 필터 파일 경로 이름에 적용되는 글로벌 패턴 목록을보십시오.
옵션 -z
옵션 -g
, -O
, -M
, 또는 -t
와 함께 사용되면 cpio, jar, pax, tar, zip 및 7z 아카이브를 검색하기 위해 파일 이름 선택 기준과 일치하는 아카이브 된 파일 만 검색합니다.
GZIP, Compress 및 Zip 형식은 자동으로 감지되며, 이는 표준 입력에서 GZIP- 압축 데이터 (예 : 파이프에서 리디렉션 된 입력)를 읽을 때 유용합니다. 다른 압축 형식에는 filename 접미사 : .bz
, .bz2
, 또는 bzip2의 경우 .bzip2
, lzma의 경우 .lzma
, xz의 경우 .xz
, lz4의 경우 .lz4
, .zst
또는 zstd의 경우 .zstd
, brotli의 경우 .br
및 .bz3
가 필요합니다. BZIP3의 경우. 또한 압축 타르 아카이브 속기 .taz
, .tgz
및 .tpz
, gzip, .tbz
, .tbz2
, .tb2
및 .tz2
의 경우 bzip2의 경우 .tlz
, xz의 경우 .txz
, zstd의 .tzst
인식됩니다. 표준 입력에서 UGREP를 사용하여 이러한 형식을 검색하려면 옵션을 사용하십시오 --label='stdin.bz2'
, bzip2의 경우 --label='stdin.lzma'
, --label='stdin.xz'
, --label='stdin.lz4
lz4의 경우 --label='stdin.lz4
및 zstd의 경우 --label='stdin.zst
등. stdin
이라는 이름은 임의적이며 생략 될 수 있습니다.
체재 | 파일 이름 접미사 | TAR/PAX 아카이브 짧은 접미사 | 접미사가 필요합니까? | stdin의 ugrep | 도서관 |
---|---|---|---|---|---|
gzip | .gz | .taz , .tgz , .tpz | 아니요 | 오토매틱 | libz |
압박 붕대 | .Z | .taZ , .tZ | 아니요 | 오토매틱 | 내장 |
지퍼 | .zip , .zipx , .ZIP | 아니요 | 오토매틱 | libz | |
7zip | .7z | 예 | --label=.7z | 내장 | |
bzip2 | .bz , .bz2 , .bzip2 | .tb2 , .tbz , .tbz2 , .tz2 | 예 | --label=.bz2 | libbz2 |
리즈마 | .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 형식은 연결 압축 파일을 지원합니다. 연결된 압축 파일은 하나의 파일로 검색됩니다.
지지 된 zip 압축 방법은 (0), deflate (8), Bzip2 (12), LZMA (14), XZ (95) 및 ZSTD (93) 저장됩니다. BZIP2, LZMA, XZ 및 ZSTD 방법은 UGREP를 해당 압축 라이브러리로 컴파일해야합니다.
암호화 된 지퍼 아카이브 검색은 지원되지 않습니다 (아마도 향상 요청에 따라 향후 릴리스).
7ZIP 아카이브를 검색하는 데 다른 방법에 비해 훨씬 더 많은 RAM과 더 많은 시간이 걸립니다. 7ZIP LZMA SDK 구현은 스트리밍을 지원하지 않으므로 물리적 추구 가능한 7Z 파일이 필요합니다. 이는 아카이브 내에 중첩 될 때 7Z 파일을 검색 할 수 없음을 의미합니다. 7zip을 피하는 것이 가장 좋습니다. ./build.sh --disable-7zip
사용하여 7zip에 대한 지원을 비활성화 할 수 있습니다.
옵션 -z
는 작업 병렬 처리를 위해 스레드를 사용하여 압축 압력이있는 스트림을 검색하여 압축 압력기를 동시에 실행하여 더 큰 파일 검색 속도를 높입니다.
모든 CPIO, PAX, TAR, ZIP 및 7Z 파일의 내용을 포함하여 package.zip
에 저장된 모든 비어 있지 않은 파일을 나열하려면 다음과 같이 저장됩니다.
ug --zmax=2 -z -l '' package.zip
동일하지만 옵션 -tPython
( ugrep -tlist
에 대한 자세한 내용)을 사용하여 Python을 호출하는 스크립트를 포함하여 Python 소스 코드 파일 만 나열하십시오.
ug --zmax=2 -z -l -tPython '' package.zip
종속성이있는 TAR 파일로 배포 된 Python 응용 프로그램을 검색하려면 AS Wheels (Python Code가 포함 된 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
Word License에 대한 Glob *.txt
와 일치하는 파일을 검색하려면 어떤 경우에도 단어 license
에 대해 project.zip
( -g
글로벌 인수가 인용되어야합니다) :
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
에서 깊이 우선 검색을 수행하려면 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.
#!
Shebangs :
ug -l -M'#!' ''
#
로 시작하지만 #!
Shebangs :
ug -l -M'#' -M'^#!' ''
모든 Python 파일 (Extension .py
또는 Shebang)을 -tPython
으로 재귀 적으로 나열합니다.
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 (