将awk操作应用于特定列
我有一个文件,其中的行如下所示: chr1 66999275 67216822+SGIP1;SGIP1;SGIP1;SGIP1;MIR3117 我现在想编辑最后一列以删除重复项,这样它就只会是SGIP1;MIR3117 如果我只有最后一列,我可以使用下面的awk代码删除重复项将awk操作应用于特定列,awk,Awk,我有一个文件,其中的行如下所示: chr1 66999275 67216822+SGIP1;SGIP1;SGIP1;SGIP1;MIR3117 我现在想编辑最后一列以删除重复项,这样它就只会是SGIP1;MIR3117 如果我只有最后一列,我可以使用下面的awk代码删除重复项 a="SGIP1;SGIP1;SGIP1;SGIP1;MIR3117" echo "$a" | awk -F";" '{for (i=1;i<=NF;i++) if (!a[$i]++) printf("%s%s",
a="SGIP1;SGIP1;SGIP1;SGIP1;MIR3117"
echo "$a" | awk -F";" '{for (i=1;i<=NF;i++) if (!a[$i]++) printf("%s%s",$i,FS)}{printf("\n")}'
a=“SGIP1;SGIP1;SGIP1;SGIP1;MIR3117”
echo“$a”| awk-F”“{for(i=1;i请尝试以下内容
awk '
{
num=split($NF,array,";")
for(i=1;i<=num;i++){
if(!found[array[i]]++){
val=(val?val ";":"")array[i]
}
}
$NF=val
val=""
}
1
' Input_file
awk'
{
num=split($NF,数组,“;”)
对于(i=1;i<p>i),我不认为它是“优雅”的,它在一定数量的假设下工作。
awk -F"+" '{printf("%s+ ",$1);split($2,a,";"); for(s in a){gsub(" ", "", a[s]); if(!c[a[s]]++) printf("%s;", a[s])}}' test.txt
根据您的输入进行测试,返回:
chr1 66999275 67216822 + SGIP1;MIR3117;
chr1 66999275 67216822 + SGIP1;MIR3117;