我这里有两个要求:
我有一个像这样的变量imp_1
其价值如下:
DI_DGF_PP_Cust_support
DI_DGF_PP_Call_Detail
DI_DGF_PP_Area
我想要“第三个实例的值”_
“ IE
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