이것은 내가 사용하는 파일의 출력입니다.
aaaaa
bbbbb
ccccc
ddddd
eeeee
fffff
ggggg
hhhhh
iiiii
jjjjj
나는 다음을 사용하면 tail -n 5 filename
다음과 같이 표시된다는 것을 알고 있습니다.
fffff
ggggg
hhhhh
iiiii
jjjjj
head
이런 식으로 명령을 사용하여 어떻게 동일하게 표시 할 수 있습니까?정밀한철사?
head -n 10 filename | tail -n 5 filename
작동하지만 내가 찾고 있는 것과는 중복됩니다.
답변1
주문
head -n 10 filename | tail -n 5 filename
무의미한. 출력은 에서 직접 읽었으므로 읽을 head
수 없습니다 . 따라서 결과는 지금의 결과와 정확히 동일합니다.tail
tail
filename
tail -n 5 filename
이 head
유틸리티는맨 위파일의 내용(또는 GNU의 경우 head
파일 끝에서 특정 줄 수를 제외하고 파일의 모든 줄). head
파일 데이터의 꼬리를 얻기 위해 이 유틸리티를 사용하고 싶지는 않습니다 . 이렇게 하려면 tail
표시된 대로 사용하십시오.
다른 솔루션은 기본 솔루션보다 더 복잡합니다 tail -n 5
.
예를 들어:
tac filename | head -n 5 | tac
GNU coreutils가 이미 설치되어 있다고 가정합니다 tac
. 둘 다 원격 POSIX 호환 셸 환경이 있는 모든 시스템에 설치되며 head
Linux 시스템 및 GNU coreutils가 설치된 기타 시스템에서만 찾을 수 있습니다.tail
tac
또는 그냥 사용하고 싶지 않다면 직접 구현할 수도 있습니다 tail
.awk
tail
$ awk -vn=5 '{ lines[i++ % n] = $0 } END { for (j = 0; j < n; ++j) print lines[(i+j)%n] }' filename
fffff
ggggg
hhhhh
iiiii
jjjjj
답변2
내 생각에는 이것이 당신이 원하는 것입니다.
foo@bar~$ 고양이 파일 아아아아 bbbb cccc 디디 디디 에 에 에 퍼프 퍼프 꽥 꽥 하하하 삼십 삼 ㅋㅋㅋ
head
이전과 동일한 줄을 인쇄하는 데 사용하려고 합니다 tail
.
foo@bar~$ tail -n 5 파일 퍼프 퍼프 꽥 꽥 하하하 삼십 삼 ㅋㅋㅋ
해결책
foo@bar~$ sort -r 파일|헤더-5|종류 퍼프 퍼프 꽥 꽥 하하하 삼십 삼 ㅋㅋㅋ
답변3
이 구현에서는 파일의 마지막 5줄만 표시하기 head
위해 Without를 사용합니다.tail
head -n -0 filename | sed 1,$(echo "$(wc -l filename | awk '{ print $1 }')-5" | bc -l)d
head -n -0 filename -- 파일의 모든 행을 표시합니다.
~에서man head:
-n, --lines=[-]N "-"로 시작하는 처음 10줄 대신 처음 N 줄을 인쇄하고, 각 파일의 마지막 N 줄을 제외한 모든 줄을 인쇄합니다.
$(echo "$(wc -l filename | awk '{ print $1 }')-5" | bc -l) -- 파일의 총 라인 수에서 5를 뺀 값을 기준으로 삭제할 라인 수를 계산합니다.
sed 1,(NUMBER_OF_LINES_TO_DELETE)d -- 이전 계산을 기반으로 마지막 5줄을 제외한 모든 줄을 삭제합니다.
답변4
head
1위를 차지하기 위해서다N파일의 줄. tail
마지막 것을 얻으려고N파일의 줄. 좀 더 일반적인 것을 원한다면 확인해 보세요.이 스레드.