grep을 사용하여 첫 번째 일치 항목만 인쇄하는 방법

grep을 사용하여 첫 번째 일치 항목만 인쇄하는 방법

사용자 이름을 grep하려고 합니다.

users | grep "^\b\w*\b" -P

첫 번째 일치 항목만 표시하도록 하려면 어떻게 해야 합니까 grep?

답변1

첫 번째 일치 항목만 표시하려면 다음과 같은 매개변수를 grep사용하세요 .-m

grep -m1 pattern file

-m num,--max-count=num

num이 일치하면 파일 읽기를 중지합니다.

답변2

정말로 첫 번째 단어만 반환하고 이를 수행하고 싶고 최신 버전의 GNU를 사용하고 있다면 grep해당 옵션이 필요할 수 있습니다 . 나는 당신이 the 없이 이것을 할 수 있다고 믿으며 , 애초에 the는 실제로 필요하지 않습니다. 그러므로: .grepgrep-o-P\busers | grep -o "^\w*\b"

그러나 @manatwork가 언급했듯이 쉘 내장 read또는 cut//가 더 적절해 보입니다(특히 더 많은 작업을 수행해야 하는 지점에 도달하면) sed.awk

답변3

그것은 나를 위해 작동합니다. 잡힌 첫 번째 게임:

users | grep -m 1 "^\b\w*\b"

마지막 경기를 잡았다

users | grep "^\b\w*\b" |tail -1

답변4

grep? 이 grep명령은 검색에 사용됩니다. cut또는 이 필요한 것 같지만 awk읽기 내장도 적절한 것 같습니다.

비교해보세요:

users | cut -d' ' -f1
users | sed 's/\s.*//'
users | awk '$0=$1'

변수에 저장하려면 bash를 사용하십시오.

read myVar blah < <(users)

또는:

read myVar blah <<< $(users). 

위의 답변은 다음을 기반으로합니다.@manatwork 댓글.

관련 정보