나는 사람들이 일반적으로 head -n | tail -n 1
셸을 사용하여 파일의 n번째 줄을 찾는다는 것을 알았습니다.
head -7
예를 들어, 파일의 7행을 찾으라는 요청 을 받으면 tail
?
답변1
head -7
또는 현대적이고 표준적인 것과 동등한 것:
head -n 7
입력의 처음 7줄(또는 더 적은 경우 최대 7줄)을 인쇄합니다.
파이프를 tail -n 1
통해 마지막 행을 가져오므로 행 수가 적은 경우 7번째 행 또는 마지막 행만 가져옵니다.
행 7 만 가져오려면 (또는 행 수가 적은 경우 아무것도 가져오지 않음) 다음을 사용할 수 있습니다.
tail -n +7 | head -n 1
값이나 행 번호가 클수록 파이프를 통과하는 데이터가 적기 때문에 효율성이 더 높습니다.
sed
다음 명령을 사용하여 이 작업을 수행 할 수도 있습니다 .
sed '7!d;q'
sed
이는 전문화 head
되지 tail
않고 이보다 긴 줄을 처리할 수 있도록 요구되지 않기 때문에 효율성이 떨어질 수 있지만 sed
구현에 따라 지나치게 긴 줄에서는 작동하지 않을 수 있습니다.head
tail
LINE_MAX
주석 에서 제안한 대로 읽기를 중단하는 대신 7 행을sed -n 7p
인쇄한 후에도 전체 입력을 읽으십시오 . 이는 덜 효율적이지만, 명령 출력에 적용할 때와 같이 7행을 출력한 후 명령을 종료 하고 싶지 않은 경우에는 이것이 더 나을 수 있습니다.sed '7!d'
head