답변:
당신은 시도 할 수 있습니다
grep pattern file | tail -1
또는
tac file | grep pattern | head -1
또는
tac file | grep -m1 pattern
grep -n
실제 파일에서 줄 번호 ( ) 를 얻으려는 제약 조건이 추가되었으므로을 tac
빼고 싶지 않다면 피해야 한다고 생각 wc -l
합니다. 그렇지 않으면와 tac
함께 grep -m1
의미가 있습니다.
grep
첫 번째 경기 후 작동을 멈출 것이므로 훨씬 낫 습니다. 하지 않고 -m 1
, grep
첫번째 것 파일의 모든 일치하는 패턴을 찾아 , 다음 head
이 표시됩니다 첫 번째는 - 훨씬 효율적입니다. 데니스, 별도의 답변으로 게시 해주세요!
Unix / Linux / Mac / Cygwin에서 큰 텍스트 파일로 작업하는 사람에게 적합합니다. Windows를 사용하는 경우 Windows의 Linux 도구에 대해 다음을 확인하십시오 . https://stackoverflow.com/questions/3519738/what-is-the-best-way-to-use-linux-utilities-under-windows .
이 워크 플로에 따라 성능을 향상시킬 수 있습니다.
zq
패키지에서 색인 파일을 쿼리하십시오 .github readme에서 인용하십시오 :
인덱스 생성
zindex는 각 줄의 어떤 부분이 색인을 구성하는지 알려줘야합니다. 이는 정규 표현식, 필드 또는 외부 프로그램을 통해 각 라인을 파이핑하여 수행 할 수 있습니다.
기본적으로 zindex는 file.gz를 색인하도록 요청 될 때 file.gz.zindex의 색인을 작성합니다.
예:
숫자 정규식과 일치하는 줄에 색인을 만듭니다. 캡처 그룹은 색인을 생성 할 부분을 나타내며 옵션은 각 줄에 고유 한 숫자 색인이 있음을 보여줍니다.
$ zindex file.gz --regex 'id:([0-9]+)' --numeric --unique
예 : CSV 파일의 두 번째 필드에 색인을 작성하십시오.
$ zindex file.gz --delimiter , --field 2
예:
문서 루트의 actions 배열에있는 항목 중 하나에서 JSON 필드 orderId.id에 색인을 작성하십시오 (jq 필요). jq 쿼리는 모든 orderId.ids의 배열을 작성한 다음 스페이스와 결합하여 jq로 파이프 된 각 개별 라인이 공백으로 구분 된 여러 개의 일치 (기본 구분자)를 갖는 단일 출력 라인을 작성하도록합니다.
$ zindex file.gz --pipe "jq --raw-output --unbuffered '[.actions[].orderId.id] | join(\" \")'"
인덱스 쿼리
zq 프로그램은 색인을 조회하는 데 사용됩니다. 압축 파일 이름과 쿼리 목록이 제공됩니다. 예를 들면 다음과 같습니다.
$ zq file.gz 1023 4443 554
줄 번호로 출력하여 파일에서 줄 1과 1000을 인쇄 할 수도 있습니다.
$ zq file.gz --line 1 1000
나는 항상 고양이를 사용하고 있습니다 (그러나 이것은 조금 더 길어집니다). cat file | grep pattern | tail -1
나는 고양이를 좋아하는 대학에서 내 리눅스 관리자 코스 교사를 비난 할 것이다 :)))))
-파일을 가져 오기 전에 먼저 파일을 만들 필요는 없습니다. grep pattern file | tail -1
더 효율적입니다.
cat
파일에 파일 을 넣을 필요가 없기 때문 grep
입니다. Cakemox의 답변에서 와 같이 grep
직접 파일 을 검색 grep pattern file
한 다음 tail
마지막 결과를 반환하는 데 사용할 수 있습니다.
tac file | grep -m 1 pattern