이라는 파일이 있습니다 . 명령을 사용하여 첫 번째 줄만 file.txt
인쇄하려면 어떻게 해야 합니까 ?grep
답변1
이것은 grep의 색다른 응용 프로그램이지만 GNU grep을 사용하여 수행할 수 있습니다.
grep -m1 "" file.txt
빈 표현식이 무엇이든 일치하기 때문에 작동하며 -m1
첫 번째 일치 후에 grep이 종료됩니다.
-m NUM, --max-count=NUM
Stop reading a file after NUM matching lines.
답변2
이것은 아무것도 아니다 grep
. "grep"이라는 이름 자체는 "세계적인정규식을 검색하여 인쇄합니다. 이것이 바로 이 ed
명령이 수행하는 작업 g/re/p
입니다(주어진 정규식에 대해 re
).
ed
1969년에 소개된 대화형 라인 편집기이지만 현재 시스템에 설치되어 있을 가능성이 높습니다(표준 POSIX 도구임). , 및 의 특정 기능에 대한 바로가기 또는 별칭 으로 생각할 수 있는 , 즉 (비대화형) 스트림 편집기인 "stream- " grep
에서 이를 가져 옵니다 .ed
ed
sed
ed
대신 이것을 사용해 봅시다 sed
:
sed -n '1p' file.txt
문자열 은 주어진 주소에 해당하는 줄( , 첫 번째 줄) 을 인쇄( )하는 1p
작은 sed
"스크립트" 입니다. 그건 그렇고, edit 명령은 (놀랍지도 않게) 편집기에서 동일한 작업을 수행합니다.p
1
1p
ed
스크립트가 명시적으로 인쇄하지 않는 모든 항목의 출력을 억제하므로 -n
우리가 얻는 것은 파일의 첫 번째 줄뿐입니다 file.txt
.
또는:
sed '1q' file.txt
이는 파일의 모든 행을 인쇄하지만 q
(인쇄 후) 행 1에서 종료됩니다( ). 이는 와 정확히 같습니다 head -n 1 file.txt
.
POSIX 표준에서(head
명령의 기본head -n N
) 매우 유사한 내용을 말합니다(의역). sed 'Nq'
즉, "각 줄을 인쇄하고 해당 줄에서 종료합니다 N
". 기존 Unix 구현과의 대칭성과 하위 호환성 head
때문에 표준에 포함되었습니다 .tail
답변3
첫 번째 줄에 고유한 문자열이 없으면 grep만으로는 이 작업을 수행할 수 없습니다. head -n 1 file.txt
그 자리에서 일할 것입니다.
패턴과 일치하는 첫 번째 줄만 인쇄하려면 헤드를 grep으로 파이프하세요.
head -n 1 * | grep [pattern]
답변4
이것이 df 출력에서 헤더를 가져오는 데 사용하는 방법입니다. 기본적으로 두 명령은 ";" 순서로 실행됩니다. df -h |head-n1; df -h |