Saya mencoba untuk mendapatkan nama pengguna:
users | grep "^\b\w*\b" -P
Bagaimana saya bisa membuatnya hanya menampilkan pertandingan pertama grep
?
shell
grep
regular-expression
Yurij73
sumber
sumber
grep
?grep
adalah untuk mencari. Anda tampaknya membutuhkan salah satucut
atauawk
, tetapiread
builtin juga tampaknya cocok.users | cut -d' ' -f1
,users | sed 's/\s.*//'
,users | awk '$0=$1'
. Jika Anda ingin menyimpannya dalam variabel, gunakanbash
:read myVar blah < <(users)
atauread myVar blah <<< $(users)
.read
Anda tidak menelurkan proses baru. Jika Anda melakukan ini berkali-kali, Anda akan melihat perbedaannya.Jawaban:
Jika Anda benar-benar ingin mengembalikan hanya kata pertama dan ingin melakukan ini
grep
dangrep
kebetulan Anda adalah versi terbaru dari GNUgrep
, Anda mungkin menginginkan-o
opsi tersebut. Saya percaya Anda dapat melakukan ini tanpa-P
dan\b
pada awalnya tidak benar-benar diperlukan. Oleh karena itu:users | grep -o "^\w*\b"
.Namun, seperti @manatwork sebutkan, shell built-in
read
ataucut
/sed
/awk
tampaknya lebih sesuai (terutama sekali Anda sampai pada titik Anda perlu melakukan sesuatu yang lebih).sumber
grep -o "[^ ]*"
Untuk hanya menampilkan kecocokan pertama
grep
, gunakan-m
parameter, misalnya:sumber
itu bekerja untuk saya. tangkapan pertandingan pertama dengan:
dan tangkapan pertandingan terakhir dengan
sumber
Mengapa
grep
? Thegrep
perintah untuk pencarian. Anda tampaknya memerlukan salah satucut
atauawk
, tetapi read builtin juga tampaknya cocok.Membandingkan mereka:
Jika Anda ingin menyimpannya dalam variabel, menggunakan bash:
atau:
Di atas jawaban berdasarkan komentar @manatwork .
sumber