awk를 사용하여 세 번째 변수 인스턴스에서 데이터 가져오기_

awk를 사용하여 세 번째 변수 인스턴스에서 데이터 가져오기_

여기에는 두 가지 요구 사항이 있습니다.

이런 변수가 있어요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

관련 정보