awk '{if (!($0 in ids)) ids[$0] = ++i; print ids[$0]}'
Поддерживает ассоциативный массив с именем ids
.Каждый раз, когда он находит новую строку, он присваивает ей монотонно увеличивающийся идентификатор ++i
.
Пример:
jkugelman$ echo $'a\nb\nc\na\nb\nc' | awk '{if (!($0 in ids)) ids[$0] = ++i; print ids[$0]}'
1
2
3
1
2
3