テキストファイルのキーと値から文字列を抽出し、新しい変数に代入

テキストファイルのキーと値から文字列を抽出し、新しい変数に代入

キー、値を読み、値を抽出するには、以下のファイルを繰り返すスクリプトが必要です。 foo_key1,foo.com,/tmp/worker${Build_Number} は、キーと値を別の変数に割り当てます (例: A="foo_key1",B="foo.com",C="/tmp/worker${ Build_シリアル番号}")。

cat abc.txt

foo_key1=foo.com|/tmp/worker${Build_Number}
foo_key2=goo.com|/tmp/manager${Build_Number}

以下のコードを試しましたが、運がありません。

while IFS== read -r key val ; do
    val=${val%\"}; val=${val#\"}; key=${key#export };
    A="$(cut -d'_' -f1 <<<"$key")"
    B="$(cut -d'_' -f1 <<<"$val")"
    C="$(cut -d'_' -f2 <<<"$val")"
    echo $A
    echo $B
    echo $C
  done < abc.txt

予想出力:

foo_key1 
foo.com
/tmp/worker${Build_Number}

ベストアンサー1

awkを使用して3つの列を分割=または|印刷し、次を使用してread列を変数に割り当てます。

awk -F '[=|]' '{print $1, $2, $3}' abc.txt | while read A B C; do
    echo $A
    echo $B
    echo $C
done

中かっこの前に正規表現を追加してデータをフィルタリングすることもできます。たとえば、'/\S+/ {print $1, $2, $3}'正規表現を使用して空白以外の文字を1つ以上一致させて空白行をスキップします。

おすすめ記事