ユーザー名をgrepしようとしています:
users | grep "^\b\w*\b" -P
最初の一致のみを表示するにはどうすればよいgrepですか?
@peterphが提案したこの作業は^ \ w * \ bです。カットまたはsed / awkの方が便利ですか?私の場合は簡単です。myVar = `users | grep -o "^ \ w * \ b" `、いいえ?
—
Yurij73
それらの比較:
—
manatwork
users | cut -d' ' -f1、users | sed 's/\s.*//'、users | awk '$0=$1'。変数に保存する場合は、bash:read myVar blah < <(users)またはを使用しますread myVar blah <<< $(users)。
@ Yurij73違いは主に実行時間にあります。で
—
peterph
read、あなたの新しいプロセスを生成しません。これを何度も行うと、違いに気付くでしょう。
awkを使用した方がよいですか?#!/ bin / bash(users | awk '$ 0 = $ 1')>ファイル; myVar <ファイル; rm -fファイル。echo $ myVar;
—
Yurij73
grep?grep検索用です。cutまたはのいずれかawkが必要と思われますが、read組み込みも適しているようです。