我尝试了各种切割命令但无法获得我想要的输出

时间:2013-05-08 14:30:13

标签: unix sed awk cut

cat DecisionService.txt
/MAGI/Household/MAGI_EDG_FLOW.erf;/Medicaid/MAGI_EDG_FLOW;4;4
/VCL/VCL_Ruleflow_1.erf;/VCL/VCL1_EBDC_FLOW;4;4
/VCL/VCL_Ruleflow_2.erf;/VCL/VCL2_EBDC_FLOW;4;4

我试过了:

cat DecisionService.txt |  cut -d ';' -f2 | cut -d '/' -f2 | tr -s ' ' '\n'

我的输出是:

$i=Medicaid
VCL
VCL

而我需要输出:

$a=Medicaid
$b=VCL

2 个答案:

答案 0 :(得分:1)

如果您只想要唯一值:

awk -F'/' 'NF&&!a[$(NF-1)]++{print $(NF-1)}' file
Medicaid
VCL

如果您确实希望输出包含前缀增量变量,那么:

awk -F'/' 'NF&&!a[$(NF-1)]++{printf "$%c=%s\n",i++,$(NF-1)}' i=97 file
$a=Medicaid
$b=VCL

注意:如果您的输入可能包含超过26个唯一值,则需要做一些更聪明的事情以避免输出$|=VCL

答案 1 :(得分:0)

从这个问题来看,目前还不太清楚你想要什么,但我猜你不想在输出中重复VCL。尝试在最后添加sort和uniq。

cat DecisionService.txt
/MAGI/Household/MAGI_EDG_FLOW.erf;/Medicaid/MAGI_EDG_FLOW;4;4
/VCL/VCL_Ruleflow_1.erf;/VCL/VCL1_EBDC_FLOW;4;4
/VCL/VCL_Ruleflow_2.erf;/VCL/VCL2_EBDC_FLOW;4;4

cat DecisionService.txt |  cut -d ';' -f2 | cut -d '/' -f2 | tr -s ' ' '\n'|sort|uniq
Medicaid
VCL