선에서 시작하는 유닉스 고양이


40

특정 줄에서 시작하는 파일에서 출력하는 가장 좋은 방법은 무엇입니까 (70000과 같은 큰 숫자). 다음과 같은 것 :

cat --line=70000 <file>

답변:


60

꼬리를 좀 더 정확하게 살펴보면 --lines = + N 스위치입니다.

tail --lines=+100 <file>

와우. 나는 이것을 리눅스에서 8 년 동안 사용한 후에조차 이것을 몰랐다! 나는 항상 bash fn을 사용했다! 감사 ! getFromLine () {lineno = wc -l $1 | awk '{print $1}'; lineno = expr $lineno - $2; 꼬리 -n $ lineno $ 1; }
secureBadshah

2
참고로 Mountain Lion (Darwin Kernel 버전 13.1.0)에서는 작동하지 않습니다. 마운틴 라이온의 변형은tail -n
Kaushik Ghose

22

가장 확실한 방법은 tail입니다. 사용하는 OS에 따라 구문이 약간 다를 수 있습니다.

tail -n +70000

tail일할 수 없다면을 사용할 수 sed있지만 속도가 느려질 수 있습니다.

sed -pe '1,69999d'

tailMinGW (600MB 텍스트 파일) 에서 제대로 작동했습니다 . 런타임은 몇 초 밖에 걸리지 않았지만 입력 파일은 이미 파일 캐시에있을 수 있습니다.
피터 Mortensen

2

행 번호 대신 주어진을 포함하는 행에서 목록을 시작해야하는 $phrase경우 다음을 시도하십시오.

more -1000 +/"$phrase" yourfilename | sed '1,4d'

-1000은 최대 1000 줄의 텍스트를 지속적으로 나열합니다. 필요에 따라 변경할 수 있습니다. 이 sed명령은 more빈 줄, "... skipping"메시지 및 의도 한 시작 줄 앞의 두 줄을 포함하여 에 의해 자동으로 삽입 된 처음 4 줄의 출력을 잘라냅니다 . 시스템에 따라 다를 수 있습니다.


2

당신은 사용할 수 있습니다 NR의 와 매개 변수 AWK의 명령을 :

cat <file> | awk '{if (NR>=7000) print}'

2
다른 한계와 함께이 명령을 사용할 수 있습니다. 샘플 : cat messages | awk '{if (NR>=7000 && NR <7003) print}'행 7000, 7001 및 7002 만 표시합니다.
Gefolge

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.