Unix 我尝试了各种剪切命令,但无法获得所需的输出

Unix 我尝试了各种剪切命令,但无法获得所需的输出,unix,sed,awk,cut,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 '/

我试过这个:

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

从这个问题来看,我们不太清楚您到底想要什么,但我想您不希望在输出中重复使用
VCL
。尝试在末尾添加sort和uniq

$a=Medicaid
$b=VCL

如果只需要唯一值,则:

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
如果您确实希望输出包含带前缀的增量变量,则:

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

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

谢谢,但我得到了以下信息:awk:(FILENAME=DecisionService.txt FNR=4)致命:尝试访问字段-1@iaav文件中有空行,很容易修复,请参阅更新。这将适用于已发布的输入,但在检查空记录时,最好测试
NF
而不是
$0
,因为如果记录中填充了数字零,则后者将失败。在这种情况下,您试图避免的问题是由于NF为零而发生的,因此测试NF是否为非零似乎更自然。@iaav很好,您现在应该通过单击旁边的勾号来接受此答案,这将显示问题已解决。lol
您现在应该接受此答案
:D:D,为什么不那个答案:D似乎把同一行字抄到了所有答案上。只是开玩笑。顺便说一句,@sudo_O,你似乎是一个人,我可以期待我所有的
awk
问题得到解决。我一直在听你的awk一句妙语。很好~~奇怪,
uniq
应该保持行分隔。您是如何处理输出的?尝试在末端添加另一个管道,然后通过
xargs
馈送数据。我像
cat DecisionService.txt | cut-d'一样进行了测试-f2 | cut-d'/'-f2 | tr-s''\n'| sort | uniq | xargs touch
。因此,这创建了两个不同的文件,
Medicaid
VCL
cat DecisionService.txt | cut-d';'-f2 | cut-d'/'-f2 | tr-s''\n'| sort | uniq | xargs touch--不提供任何输出。
I tested
这意味着我测试了输出在单独的行中<代码>触摸不提供任何输出。它在运行目录中创建了空文件:)您应该使用您想要执行的操作替换touch,还必须确保检查
xargs
manpage以查看参数是如何传递的
xargs
将每个输出行分别传递给传递给它的命令。如何选择变量名?为什么使用
$i=xxxx
符号而不是shell赋值
i=xxxx
符号?你在寻找唯一的名字吗?它们必须保持有序吗?如果第2、3、5行(第4行中有其他名称)中出现VCL之类的名称,会发生什么情况?似乎您希望在行中第一个分号后面列出顶级目录-是否正确?
awk -F'/' 'NF&&!a[$(NF-1)]++{printf "$%c=%s\n",i++,$(NF-1)}' i=97 file
$a=Medicaid
$b=VCL