awkを使用して3番目の変数インスタンスからデータを取得する_

awkを使用して3番目の変数インスタンスからデータを取得する_

これには2つの要件があります。

このような変数があります。imp_1その値は次のとおりです。

DI_DGF_PP_Cust_support
DI_DGF_PP_Call_Detail
DI_DGF_PP_Area

「第三インスタンスの価値」が欲しい_「つまり。

Cust_support
Call_Detail
Area

以下を使用していますが、動作しません。

imp_2=`awk -F _ '{print $4}'` "$imp_1"

返品、

私が探している価値imp_2別の変数から$imp_3取得します$imp_3- $imp_2(結果を減算します)。

たとえば、

$imp_2-

Cust_support
Call_Detail
Area

$imp-3

Cust_support
Call_Detail
Area
Call_detail
Finance_Detail
Marketing_Analysis

だから$imp_3 -$imp_2

Call_detail
Finance_Detail
Marketing_Analysis

以下を確認しました。

comm -3 <(echo "SDH") <(echo "ADP_DATA")

結果:

        ADP_DATA
SDH

答え1

using を使うとawk使いcutやすくなります。解析する区切り文字とフィールドの数を定義するだけです。

imp_2=$(printf '%s\n' "$imp_1" | cut -d_ -f4-)
printf '%s\n' "$imp_2"

つまりimp_3 - imp_2、2つの変数間の一意でない行の場合は、commユーティリティを使用します。

comm -3 <(echo "$imp_3") <(echo "$imp_2")

答え2

以下はimp1について試しました。

echo $imp_1|awk -F "_" '{$1=$2=$3="";print $0}' |sed -r "s/^\s+//g"|sed -r "s/\s+$//g"|sed "s/ /_/g"

出力

Cust_support
Call_Detail
Area

関連情報