1

コマンドラインへのリクエストにより、csv形式でレスポンスが返ってきます。これはファイルです:

"STACK";"STACK_ID";"NAME";"DESCRIPTION";"CREATION_TIME";"DELETION_TIME";"STATUS"
"STACK";"arn:aws:cloudformation:us-west-1:222222222222:stack/LiveStream2/00000000-6000-00e2-acd3-333333333333";"LiveStream2";"(nil)";"2013-01-23T16:01:36Z";"2013-01-23T16:22:57Z";"DELETE_COMPLETE"
"STACK";"arn:aws:cloudformation:us-west-1:444444444444:stack/LiveStream/00000000-6000-00e2-acd3-222222222222";"LiveStream";"(nil)";"2013-01-23T13:53:13Z";"2013-01-23T15:20:29Z";"DELETE_COMPLETE"

スクリプトを使用して、NAMEフィールドの値を取得し、それを変数に入れたいと思います。手伝ってくれませんか。

4

4 に答える 4

2

NAME が 3 番目のフィールドであることがわからない場合は、ヘッダー行で探す必要があります。

awk -F \; '
    NR==1 {
        for (i=1; i<=NF; i++) {
            if ($i == "\"NAME\"") {
                name_field = i
                break
            }
        }
        next
    }
    { print $name_field }
' < filename

これは出力します

"LiveStream2"
"LiveStream"
于 2013-01-24T22:14:48.520 に答える
1

これはサンプルコードです。

#!/bin/sh
OLDIFS=$IFS
IFS=;
while read f1 f2 f3 
do
     echo "Name variable is              :$f3"

done<filename.csv
IFS=$OLDIFS

3 番目のフィールドは「NAME」で、f3 の変数に割り当てられます。ここでは、変数が 2 回表示されます。

于 2013-01-24T12:58:15.103 に答える
1

cut コマンドはうまく機能するはずです。たとえば、ファイルがtest.txt.

cat test.txt| cut -d';' -f3フィールド 3 を取得します。

値を行ごとに保存する場合は、次を使用します。

for i in `cat test.txt`
do
  MYVAR=$(echo $i| cut -d';' -f3)
  //do something with the variable $MYVAR
done

注: これは、質問に対する 1 つのアプローチにすぎません。あなたが求めたことを達成する方法はいくつかあります。

于 2013-01-24T12:59:22.220 に答える