ユーザー名を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
組み込みも適しているようです。