У меня есть файл, строки которого выглядят так:
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",$i,FS)}{printf("\n")}'
Это возвращает SGIP1; MIR3117;
Однако я не могу понять, как я могу использовать это, чтобы повлиять только на мой пятый столбец. Если я просто передам всю строку, я получу SGIP1 два раза, так как awk затем обрабатывает все перед первой точкой с запятой как один столбец. Есть ли элегантный способ сделать это?