これには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