Основываясь на приведенном вами примере, эта awk
команда выдаст вывод, который вы запрашиваете:
awk ' { i = index($0, "|") if (i == 0) { print "Error: line [" $0 "] does not have a \"|\" character." } else { prefix = substr($0, 1, i-1) if (++count[prefix] == 1) print } }'
Первые две строки кода подтверждают, что каждая строка ввода содержит |
. Следующий извлекает строку перед первым |
символом (например, «Вопрос один»). count
это ассоциативный массив, который мы используем, чтобы подсчитать, сколько раз появился каждый префикс. Если это # 1 (т. Е. 1-е появление), выведите строку; в противном случае ничего не печатать.