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