どのように2回grepできますか?

どのように2回grepできますか?

grepファイルで2回実行せずに変数を1回だけ埋める方法はありますか?ファイルが小さくてあまり問題ではありませんが、一度に完了できるかどうかを知りたかったです。

FIRST_NAME=$(grep "$customer_id" customer-info|cut -f5 -d,)
LAST_NAME=$(grep "$customer_id" customer-info|cut -f6 -d,)

ベストアンサー1

シェル文字列置換grepを1回使用して2回分割できます。

NAME=$(grep "$customer_id" customer-info | cut -f5,6 -d,)
FIRST_NAME=${NAME%,*}
LAST_NAME=${NAME#*,}

またはbashの場合は、プロセス置換を使用します。

IFS=, read FIRST_NAME LAST_NAME < <(grep "$customer_id" customer-info | cut -f5,6 -d,)

read入力を分割しIFS、最初の値をに割り当て、FIRST_NAME残りの値をに割り当てますLAST_NAME。プロセス置換とリダイレクトを使用すると、サブシェルを使用せずに出力を渡すことができます< <(...)grep ... | cut ...read

おすすめ記事