Заменить каждое уникальное значение во всех столбцах уникальным идентификатором

Ответ оказался проще, чем я думал. Благодарим Джона Б. , для этого можно использовать вспомогательную оболочку (...) :

➜ time (sleep $(sleep 3; echo 1))
( sleep $(sleep 3; echo 1); )  0.00s user 0.00s system 0% cpu 4.007 total

3
17.09.2017, 06:07
1 ответ

Вот очень простой подход. У меня отлично работает с gawk 3.1.7.

#!/usr/bin/awk -f
{
    for(x=2;x<=NF;x++) {
        if(x$x in a) {
            $x=a[x$x]
        } else {
            if($x=="NA") {
                print $x,0 > "column"x
                a[x$x]=0
                $x="0"
            } else {
                m[x]++
                print $x,m[x] > "column"x
                a[x$x]=m[x]
                $x=m[x]
            }
        }
    }
    print $0 > "results"
}
2
27.01.2020, 21:15

Теги

Похожие вопросы