사용자 이름을 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는 실제로 필요하지 않습니다. 그러므로: .grep
grep
-o
-P
\b
users | 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 댓글.