알 수없는 길이의 텍스트 파일, 어떻게 모든 예를 들어, 읽을 수 감안할 하지만 파일의 첫 두 줄? 나는 tail
마지막 N 줄을 줄 것이라는 것을 알고 있지만, N이 무엇인지 미리 모른다.
그래서 파일
AAAA
BBBB
CCCC
DDDD
EEEE
내가 원하는
CCCC
DDDD
EEEE
그리고 파일
AAAA
BBBB
CCCC
난 그냥 얻을
CCCC
알 수없는 길이의 텍스트 파일, 어떻게 모든 예를 들어, 읽을 수 감안할 하지만 파일의 첫 두 줄? 나는 tail
마지막 N 줄을 줄 것이라는 것을 알고 있지만, N이 무엇인지 미리 모른다.
그래서 파일
AAAA
BBBB
CCCC
DDDD
EEEE
내가 원하는
CCCC
DDDD
EEEE
그리고 파일
AAAA
BBBB
CCCC
난 그냥 얻을
CCCC
답변:
tail --help
다음을 제공합니다.
-n, --lines=K output the last K lines, instead of the last 10;
or use -n +K to output lines starting with the Kth
따라서 첫 번째 2
줄 을 걸러 내려면 -n +3
찾고있는 출력을 제공해야합니다 (3 번째부터 시작).
head
습니까?
첫 번째 샘플이 sample1.dat라고 가정하면 tail --lines=3 sample1.dat
세 번째 줄에서 마지막 줄까지 모든 줄이 인쇄됩니다.
두 번째 샘플의 경우 다시 sample2.dat라고 가정 tail --lines=-1 sample2.dat
하고 마지막 줄을 인쇄합니다.
tail +3 anyfile
`이 일반적인 경우에 원하는 결과를 제공하지만 원하는 결과를 제공 tail --lines=N
하려면 N을 미리 알아야한다는 것입니다.
tail
... "아래쪽"이 아니어야합니까? (Ba-dum TISH! 감사합니다, 저는 1 주일 내내 여기에있을 것입니다 ...)
나는 꼬리 또는 머리만으로 그것을하는 법을 정말로 모른다. 그러나 wc -l
(라인 수)와 bash 표현을 사용하면 그것을 달성 할 수있다.
tail -$(( $( wc -l $FILE | grep -Eo '[0-9]+' ) - 2 )) $FILE
도움이 되었기를 바랍니다.
awk를 사용하여 마지막 두 줄을 제외하고 모두 가져 오기
awk 'FNR==NR{n=FNR}FNR<=n-3{print}' file file
처음 두 줄을 제외한 모든 것을 얻는 awk
awk 'NR>2' file
또는 더 많이 사용할 수 있습니다
more +2 file
아니면 그냥 강타
#!/bin/bash
i=0
while read -r line
do
[[ $i > 1 ]] && echo "$line"
((i++))
done <"file"