%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
그만큼fzf 예제 위키 페이지fzf를 사용하여 디렉토리의 모든 파일 내용 내에서 퍼지 검색을 수행하는 방법을 설명합니다. 하지만 위키 페이지의 예에서는
ag --nobreak --nonumbers --noheading . | fzf
파일은 줄별로 분할되며 각 줄은 별도로 처리됩니다.
예를 들어 파일은 다음과 같습니다.
hello
world
검색어가 다른 줄에 있기 때문에 검색어 "hello world"와 일치하지 않습니다.
줄 단위가 아닌 전체 파일 내에서 검색하도록 fzf를 어떻게 사용할 수 있습니까?
답변1
다소 더러운 해결책이 있습니다.
rg --heading --glob "*.txt" . some_directory_path | sed 's/^$/NEWLINEHEREYO/g' | tr '\n' ' ' | sed 's/NEWLINEHEREYO/\n/g' | fzf
설명:
당신이 할 때
rg .
어딘가에 파이프를 시도하면 손실되는 특정 형식으로 출력을 터미널에 인쇄합니다. 이 작업을 효율적으로 수행하려면 형식이 필요하다고 생각합니다. 따라서 형식을 유지하는 --heading 플래그입니다. --glob 및 디렉토리는 내 사용 사례에서 수행했기 때문에 추가했으며 명령이 손상되지 않도록 수정하고 싶지 않았습니다. 저는 컴퓨터에 그다지 능숙하지 않습니다.
그런 다음 파일을 구분하는 모든 빈 줄을 sed를 사용하여 NEWLINEHEREYO 태그로 바꿉니다. 그런 다음 tr을 사용하여 모든 개행 문자(빈 행을 파괴함)를 잘라서 원하는 단일 행 출력을 제공합니다. 그런 다음 NEWLINEHEREYO를 다시 줄 바꿈으로 변환하여 다른 sed 명령으로 나누기를 다시 도입하므로 fzf는 문자 그대로 단일 줄인 것처럼 검색하지 않습니다.
매우 비효율적이지만 내 사용 사례에는 괜찮습니다. 나는 sed, tr 및 sed 명령을 하나로 병합할 수 있다고 생각하지만 그렇게 하기에는 너무 멍청합니다.