私はLinuxに初めて触れました。自動化が完了したら、生成された要約ファイルを解析する必要があります。要約ファイルは次のとおりです。
Total_Test_Cases_Count:25
Total_Pass:24
Total_Fail:1
Execution_Duration:5m 7sec
Pass_Percentage:96.11%
Failure_Percentage:3.89%
この値が変数に個別に存在し、他の関数に渡すことができるようにしたいです。
私の予想結果:
Total_Test_Cases_Count(as a variable) with value 25.
Total_Pass(as a variable) with value 24.
他の人にも同じです。
私が今まで試したこと:
awk "NR==1" summary.txt
これは作る
TotalCount:25
ベストアンサー1
これは連想配列を使用するのが最善です。例えば
declare -A array
while IFS=: read key val; do
array["$key"]="$val"
done < input.txt
for key in Total_Test_Cases_Count Total_Pass; do
printf '%s=%s\n' "$key" "${array[$key]}"
done
出力:
Total_Test_Cases_Count=25
Total_Pass=24
値にフィールド区切り文字(コロン、)が含まれていると、:
この操作は失敗します。この場合、まず入力のフィールド区切り文字を両方のフィールドに存在しない区切り文字に変更する必要があります。通常、タブは良い選択です。たとえば、
while IFS=$'\t' read key val; do
array["$key"]="$val"
done < <(sed -e 's/:/\t/1' input.txt)
IFSはタブ文字を区切り文字として使用するように設定されており、このsed
コマンドは最初の(最初のみ)コロン文字をタブ文字に変更します。