awk - добавить столбец после соответствия остальным столбцам

Вы могли попытаться отладить Apache, поскольку он запускает со следующей командой:

$ sudo strace -Ff apachectl start

Вы могли также сделать это:

$ sudo strace -Ff service httpd start

Поймать вывод к файлу журнала:

$ sudo strace -Ff service httpd start 2>&1 | tee apache_$(date +%F_%T).log
3
13.04.2017, 15:37
3 ответа
[1132914]
2
27.01.2020, 21:16
[1133257]другое решение [1133676]awk[1133677]:[12147]
1
27.01.2020, 21:16

Лично я бы просто делал все это в Awk из оригинального файла, а не наполовину в PHP и наполовину в Awk или Perl. Учитывая вышеприведенный file1.txt , выдаст желаемый результат:

{
    Vals[$1]++;
    Vals[$2]++;
    Third_col[$1, $2] = Third_col[$2, $1] = $3;
}
END{
    for (i in Vals) {
        for (j in Vals) { 
            if (i == j || (i SUBSEP j in printed)) { continue } 
            Third_col_val = (i SUBSEP j in Third_col) ? Third_col[i, j] : 0; 
            print i, j, Third_col_val; 
            printed[j, i]++; 
            printed[i, j]++ 
        } 
    } 
}

Обратите внимание, что это занимает время O(n2), поэтому для очень больших списков (миллионы строк) это будет медленно и насыщено памятью.

.
2
27.01.2020, 21:16

Теги

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