라는 파일이 file.txt
있습니다. grep
명령을 사용하여 첫 줄만 인쇄하려면 어떻게 해야합니까?
grep
파일의 첫 줄을 인쇄하는 데 가장 적합한 도구는 아닙니다. 와 일치하는 첫 번째 줄을 인쇄하고 싶거나을 위해 grep
특정 용도로 사용 grep
하려는 경우 그 내용을 알려주십시오. 우리가 더 많은 맥락을 가지고 있다면 아마도 우리는 당신과 지역 사회를 더 잘 도울 수있는 답변을 줄 수 있습니다.
라는 파일이 file.txt
있습니다. grep
명령을 사용하여 첫 줄만 인쇄하려면 어떻게 해야합니까?
grep
파일의 첫 줄을 인쇄하는 데 가장 적합한 도구는 아닙니다. 와 일치하는 첫 번째 줄을 인쇄하고 싶거나을 위해 grep
특정 용도로 사용 grep
하려는 경우 그 내용을 알려주십시오. 우리가 더 많은 맥락을 가지고 있다면 아마도 우리는 당신과 지역 사회를 더 잘 도울 수있는 답변을 줄 수 있습니다.
답변:
기존의 grep 응용 프로그램은 아니지만 다음을 사용하여 수행 할 수 있습니다.
grep -m1 "" file.txt
빈 표현식이 무엇이든 일치하기 때문에 작동하지만 -m1
첫 번째 일치 후에 grep이 종료됩니다.
-m NUM, --max-count=NUM
Stop reading a file after NUM matching lines.
grep: unknown option -- m
이것은 무언가가 아닙니다 grep
. "grep"이름 자체는 " 전역 적으로 정규식 검색 및 인쇄" 의 약어로 , ed
명령 g/re/p
이 수행하는 것입니다 (주어진 정규식 re
).
ed
1969 년의 대화식 라인 편집기이지만 오늘날에도 시스템에 설치 될 가능성이 높습니다. 우리는 가지고 grep
에서 ed
, 그것은 특정 기능에 대한 바로 가기 또는 별칭으로 볼 수있는 ed
, 그리고 sed
"이다, 시냇물ed
", 즉 (비 대화식) 스트림 편집기.
sed
대신 사용하자 :
$ sed -n '1p' file.txt
1p
문자열은 작은이다 sed
"스크립트"그 인쇄 ( p
) 지정된 주소 (에 해당하는 라인 1
, 첫 번째 줄). 편집 명령 1p
은 ed
편집기 에서 동일한 작업을 수행합니다 .
이 -n
스크립트는 스크립트에 의해 명시 적으로 인쇄되지 않은 것의 출력을 억제하므로, 우리가 얻는 모든 것은 파일의 첫 줄입니다 file.txt
.
또는
$ sed '1q' file.txt
파일의 모든 줄을 인쇄하지만 q
인쇄 후 1 줄에서 ( )를 종료 합니다. 이것은 정확히head -n 1 file.txt
.
이 (일반화)라는 POSIX 표준에 head -n N
많이와 동일한 sed 'Nq'
, 즉 "모든 라인을 인쇄하지만 줄에서 종료합니다 N
". 그 이유 head
는 표준에 전혀 포함되어 있었기 때문입니다 tail
(기존 Unix 구현과의 호환성).
그러나 그렙의 또 다른 자유로운 사용 - 찌언 변환 그 선이 후, 사용 후, 줄 번호를 확인 오프 라인 번호 등을 제거하기 위해 grep을 번호로 여러 선회 진행됩니다
function grep1() (
nlines=$(wc -l < "$1")
nlw=$(printf "%d" "$nlines" | wc -c)
nl -d '\n' -ba -n ln -w "$nlw" -s ' ' "$1" | grep '^1 ' | sed 's/^1 *//'
)
function greplast() (
nlines=$(wc -l < "$1")
nlines=$((nlines + 0))
nlw=$(printf "%d" "$nlines" | wc -c)
nl -d '\n' -ba -n ln -w "$nlw" -s ' ' "$1" | grep "^$nlines " | sed "s/^$nlines *//"
)
나는이 답변을 당신 이 무언가를 할 수 있다고해서 (grep 또는 bash 또는 ... 등), 당신이 해야 한다는 것을 의미하지는 않습니다. 어쩌면 더 나은 도구가있을 것입니다. sed ( sed 1q
또는 sed -n 1p
) 및 head ( head -n 1
)는 파일에서 첫 번째 줄을 인쇄하는 데 더 적합한 도구입니다. 파일의 마지막 줄을 인쇄 할 경우, 당신은 tail -n 1
나sed -n '$p'
. 이 도구는 위의 기능에서 3+ 대신 단일 명령 일뿐만 아니라 미래 독자들에게도 훨씬 더 명확합니다. 나는 당신의 질문에 대한 (현재 3) 다운 지지자 중 하나가 아니지만 (임의의 근거가없는) 작업을위한 임의의 도구에 대한 귀하의 주장이 그 이유 일 가능성이 높습니다 downvotes. 그것은이 시스템이 극단적으로 같지도 grep
도없는 head
, tail
그리고 sed
.
head -1 file.txt
작동하지?