
シェルスクリプトの場合は、4つのパラメータ値を含む行を含むファイルからユーザーパスワードを取得する必要があります。
*:*:*:test:test
:
3番目と4番目の列を別々にインポートし(コロン()を除く)、別の変数に渡したいと思います。
答え1
次のようなものを使用できます。
VARIABLE=$(awk -F\: '{print $4}' input_file)
これにより、4 番目の引数が名前付き変数に割り当てられます。VARIABLE
答え2
使用が明示的に強制されていないと仮定すると、awk
Bash機能を使用して外部プロセスを使用しないでください。
IFS=':' read _ _ myCol3 myCol4 _ < myFile
これは_
有効な変数名ですが、ドロップポイントとしてよく使用されます。最後の項目は_
追加フィールドを取得します。
あなたのサンプルデータには、あなたが言ったように4つではなく5つの値があることが確認されました。
編集:ファイルから取得した複数の配列値を設定するには(この場合は私のpasswdファイルの11行目):
$ myArray+=( $( awk < /etc/passwd '-F:' 'NR == 11 { print $1, $3, $6; }' ) )
$ declare -p myArray
declare -a myArray=([0]="uucp" [1]="10" [2]="/var/spool/uucp")
$ echo "${myArray[1]}"
10