awkを使用してファイルからコロン(:)の後の単語を取得する方法

awkを使用してファイルからコロン(:)の後の単語を取得する方法

シェルスクリプトの場合は、4つのパラメータ値を含む行を含むファイルからユーザーパスワードを取得する必要があります。

*:*:*:test:test

:3番目と4番目の列を別々にインポートし(コロン()を除く)、別の変数に渡したいと思います。

答え1

次のようなものを使用できます。

VARIABLE=$(awk -F\: '{print $4}' input_file)

これにより、4 番目の引数が名前付き変数に割り当てられます。VARIABLE

答え2

使用が明示的に強制されていないと仮定すると、awkBash機能を使用して外部プロセスを使用しないでください。

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

関連情報