여기에는 두 가지 요구 사항이 있습니다.
이런 변수가 있어요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
, 두 변수 사이의 고유하지 않은 행의 경우 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