5

シェルスクリプトで以前に定義された $LINE を指定すると、次のようになります

var1=$(echo $LINE | cut -d, -f4)
var2=$(echo $LINE | cut -d, -f5)
var3=$(echo $LINE | cut -d, -f6)

カットが 1 回だけ実行される 1 つのコマンドに結合する方法はありますか? 何かのようなもの

var1,var2,var3=$(echo $LINE | cut -d, -f4,5,6)
4

2 に答える 2

9

組み込みreadコマンドは、複数の変数に割り当てることができます。

IFS=, read _ _ _ var1 var2 var3 _ <<< "$LINE"
于 2012-12-22T04:10:53.180 に答える
4

はい、配列に問題がなければ:

var= ( $(echo $LINE | cut -d, --output-delimiter=' ' -f4-6) )

varインデックスが 0 になることに注意してください。

ただし、CSV$LINEを bash 括弧が理解できるものに変換してからvar = ( $LINE ).

編集: $LINE にスペースがある場合、上記は問題を引き起こします...その場合は、もう少し注意する必要があり、AWK は引用符を追加するためのより良い選択かもしれません:

var= ( $( echo $LINE | awk IFS=, '{print "\"$4\" \"$5\" \"$6\""}' ) )
于 2012-12-21T23:06:27.473 に答える