Bash에서 첫 번째 X 줄을 건너 뛰는 파일 인쇄
인쇄 할 파일이 있지만 첫 번째 1e6 줄을 건너 뜁니다. 나는 고양이 매뉴얼 페이지를 보았지만 이것을 할 수있는 옵션을 보지 못했습니다. 이 작업이나 간단한 bash 프로그램을 수행하는 명령을 찾고 있습니다.
당신은 꼬리가 필요합니다. 몇 가지 예 :
$ tail great-big-file.log
< Last 10 lines of great-big-file.log >
특정 수의 "첫 번째"줄을 건너 뛰어야한다면
$ tail -n +<N+1> <filename>
< filename, excluding first N lines. >
즉, N 줄을 건너 뛰려면 N + 1 줄을 인쇄하기 시작합니다. 예:
$ tail -n +11 /tmp/myfile
< /tmp/myfile, starting at line 11, or skipping the first 10 lines. >
마지막으로 너무 많은 행을 보려면 "+"를 생략하십시오.
$ tail -n <N> <filename>
< last N lines of file. >
파일의 처음 10 줄을 제거하는 가장 쉬운 방법은 다음과 같습니다.
$ sed 1,10d file.txt
시스템에서 GNU tail을 사용할 수있는 경우 다음을 수행 할 수 있습니다.
tail -n +1000001 huge-file.log
그것은 +
당신이 원하는 것을 하는 캐릭터입니다. 매뉴얼 페이지에서 인용하려면 :
K의 첫 문자 (바이트 또는 행 수)가`+ '인 경우 각 파일의 시작 부분에서 K 번째 항목부터 시작하여 인쇄하십시오.
따라서 주석에서 언급했듯이 +1000001을 입력하면 처음 1,000,000 줄 이후에 첫 번째 항목으로 인쇄가 시작됩니다.
AWK의 덜 장황한 버전 :
awk 'NR > 1e6' myfile.txt
그러나 정수를 사용하는 것이 좋습니다.
sed
대안 을 제안하기 위해 . :) 처음 백만 줄을 건너 뛰려면을 시도하십시오 |sed '1,1000000d'
.
예:
$ perl -wle 'print for (1..1_000_005)'|sed '1,1000000d'
1000001
1000002
1000003
1000004
1000005
처음 10 줄을 보려면 다음과 같이 sed를 사용할 수 있습니다.
sed -n '1,10 p' myFile.txt
또는 20에서 30 줄을 보려면 다음을 사용할 수 있습니다.
sed -n '20,30 p' myFile.txt
범위 주소 와 함께 sed delete
명령 을 사용하십시오 . 예를 들면 다음과 같습니다.
$ sed 1,100d file.txt # Print file.txt omitting lines 1-100.
또는 알려진 범위 만 인쇄하려면 -n
플래그 와 함께 print 명령을 사용하십시오 .
$ sed -n 201,300p file.txt # Print lines 201-300 from file.txt
이 솔루션은 GNU 유틸리티의 존재 여부에 관계없이 모든 UNIX 시스템에서 안정적으로 작동해야합니다.
처음 두 줄을 건너 뛰려면
tail -n +3 <filename>
첫 x 줄을 건너 뛰려면
tail -n +$((x+1)) <filename>
이 쉘 스크립트는 나를 위해 잘 작동합니다 :
#!/bin/bash
awk -v initial_line=$1 -v end_line=$2 '{
if (NR >= initial_line && NR <= end_line)
print $0
}' $3
이 샘플 파일 (file.txt)과 함께 사용 :
one
two
three
four
five
six
명령 (파일의 두 번째 줄부터 네 번째 줄까지 추출) :
edu@debian5:~$./script.sh 2 4 file.txt
이 명령의 출력 :
two
three
four
물론 모든 인수 값이 예상되는지 테스트하여 예를 들어 개선 할 수 있습니다 :-)
sed -n '1d;p'
이 명령은 첫 번째 줄을 삭제하고 나머지 줄을 인쇄합니다
head 및 tail 명령을 사용하여이를 수행 할 수 있습니다.
head -n <num> | tail -n <lines to print>
여기서 num은 1e6 + 인쇄하려는 줄 수입니다.
cat < File > | awk '{if(NR > 6) print $0}'
나는 똑같이해야 했고이 실을 찾았습니다.
"tail -n +를 시도했지만 모든 것을 인쇄했습니다.
더 많은 + 행이 프롬프트에서 훌륭하게 작동했지만 헤드리스 모드 (cronjob)에서 실행될 때 완전히 다르게 작동하는 것으로 나타났습니다.
나는 마침내 이것을 직접 썼다.
skip=5
FILE="/tmp/filetoprint"
tail -n$((`cat "${FILE}" | wc -l` - skip)) "${FILE}"
참고 URL : https://stackoverflow.com/questions/604864/print-a-file-skipping-first-x-lines-in-bash
'development' 카테고리의 다른 글
T-SQL : 조인을 통해 삭제할 행 선택 (0) | 2020.02.13 |
---|---|
레일에서 스캐 폴딩 실행 취소 (0) | 2020.02.13 |
원격 저장소는 이미 새로운 저장소에 대한 'git push'에 존재합니다. (0) | 2020.02.13 |
최대 업로드 파일 크기 변경 (0) | 2020.02.13 |
EditText 커서 색상 설정 (0) | 2020.02.13 |