Ваша цветовая схема терминала конфликтует с цветами GCC по умолчанию. То есть, черное на черном не видно. Это объясняется в руководстве:
Цвета определяются переменной окружения
GCC_COLORS
. Ее значение представляет собой список возможностей и Select Graphic Rendition (SGR), разделенный двоеточием. Rendition (SGR) подстроки. Команды SGR интерпретируются терминалом или эмулятором терминала. (См. раздел в документации вашего текстового терминала о допустимых значениях и их значениях как атрибуты символов.) Эти значения подстроки являются целыми числами в десятичном и могут быть объединены точкой с запятой. Общие значения1
для полужирного начертания,4
для подчеркивания,5
для мерцания,7
для инверсии,39
для цвета переднего плана по умолчанию,30
-37
для цвета переднего плана,90
до97
для 16-цветного режима цветов переднего плана,38;5;0
до38;5;255
для 88- и 256-цветного режимов переднего плана цвета,49
для цвета фона по умолчанию, от40
до47
для фоновых цвета,100
-107
для фоновых цветов 16-цветного режима, и48;5;0
-48;5;255
для 88- и 256-цветного режимов фоновых цветов. цвета.По умолчанию GCC_COLORS имеет значение.
error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01
, где01;31
- жирный красный,01;35
- жирный пурпурный,01;36
- жирный голубой,01;32
- жирный зеленый и01
- жирный зеленый. УстановкаGCC_COLORS
в значение пустая строка отключает цвета. Поддерживаются следующие возможности следующим образом.
Вы сможете изменить переменную окружения GCC_COLORS
, чтобы изменить quote
на другой цвет, что-то вроде 01;34
. Более подробная информация содержится на странице Википедии об управляющих кодах ANSI.
сawk
:
awk -F, '{
printf $1 FS $2 FS;
split($3, arr, / +/); for(val in arr) !uniq_arr[ arr[val] ]++;
for (key in uniq_arr) {
printf (key!="")? SPACE key:""; SPACE=" "; delete uniq_arr[key]
};
printf FS $4"\n"
}' infile
[1], Value1, UAC, AB
[2.2], Check1, D2A BOH, SD
[63], name2, MFB, k
Это split($3, arr, / +/)
разбивает столбец #3 на массив arr
на основе разделителя пробелов (, может быть один -или -больше пробелов в качестве разделителя ).
В for(val in arr) !uniq_arr[ arr[val] ]++
мы создаем новый массив с удаленными повторяющимися значениями, взятыми из массива arr
; поэтому окончательные значения в массиве uniq_arr
являются уникальными значениями только в каждом столбце3.
затем мы просто печатаем сохраненные значения в uniq_arr
и удаляем этот ключ после того, как он напечатан; обратите внимание, что значения столбцов #1, #2 и #4 печатались отдельно.
см. также: