Объедините 2 файла на основе всех доступных значений первого столбца в обоих файлах

[1188990]Нет, и на самом деле это тоже не так просто, как переустановка.

Во всяком случае, потратьте некоторое время на выяснение того, что было точкой входа, но сейчас эта установка - опасный мусор. Вы должны рассмотреть возможности:

Украденные данные [1189927]: Есть ли у них сейчас пароли к доступным сервисам (например, веб-приложениям)? Вероятно, вам придется сбросить целую тонну паролей и (что очень важно) уведомить людей, если у вас есть их личные данные и/или учетные данные для входа в систему.

Доступ к файлам[1189929]: Переустановки и копирования через файлы недостаточно. Вам необходимо убедиться, что ваши файлы - это ваши файлы. Очень распространенным хаком является вставка кода в веб-файлы (для рекламы хакера и заражения посетителей ботнета). Вы просто не можете доверять данным с сервера. Поэтому мы используем управление версиями, на которые не позволяем писать производственному серверу, не так ли?

Что ещё произошло?[1189931] Добавили пользователей, изменили группы, добавили сервисы, [1189932]испортили [1189933] сервисы ([1189934]типа "Операция Виндиго" использует[1189935])..... Вы просто не знаете, что случилось с этим сервером. Вы можете криминалистически разобрать его, но это может оставить его открытым для дальнейших атак, и на это уйдут недели.

Короче говоря, вам нужно построить новый сервер, вам нужно восстановить безопасные копии ваших файлов, и любые данные из базы данных нужно осмотреть и проверить, чтобы убедиться, что они не обрушились на дополнительные маршруты доступа. О, и вам нужно уведомить пользователей и людей, на которых вы храните данные.

-b 0.0.0.0

Прочитав ваши комментарии по этому вопросу и ваш опыт на сегодняшний день, возможно, стоит нанять кого-нибудь с опытом для установки и наблюдения за следующей эволюцией сервера. Это все, чему вы можете научиться, но это также и то, что вам нужно поддерживать.

http://COMPUTERNAME:8080

Подход "огонь и забытье" к серверам чрезвычайно опасен.[1189002].

1
02.04.2014, 18:34
2 ответа

Файл 'x':

FNR==1 {
    ++FILENO
}
{
    T[$1]++
    X[$1,FILENO]=$2
}
END {
    print "type\tvalue1\tvalue2\tdifference"
    for(t in T)
        print t"\t"X[t,1]+0"\t"X[t,2]+0"\t"0+X[t,1]-X[t,2]
}

Выполнение:

$ awk -f x file1 file2
type    value1  value2  difference
viewer  23      2990    -2967
remark  2       240     -238
test    27      0       27
exam    0       200     -200

Версия со строкой для «всего», сортировка и пропуск строк без разницы:

FNR==1 {
    ++FILENO
}
{
    T[$1]++
    X[$1,FILENO]=$2
}
END {
    print "type\tvalue1\tvalue2\tdifference"
    for(t in T) {
        if(X[t,1]!=X[t,2])
            print t"\t"X[t,1]+0"\t"X[t,2]+0"\t"0+X[t,1]-X[t,2] | "sort"
        S[1]+=X[t,1]
        S[2]+=X[t,2]
    }
    close("sort")
    print "total\t"S[1]+0"\t"S[2]+0"\t"S[1]-S[2]+0
}

Я добавил строку «зевает 3» к обоим входным файлам ...

file1:

yawns   3
viewer  23
test    27
remark  2

file2:

viewer  2990
yawns   3
exam    200
remark  240

Running:

$ awk -f x file1 file2
type    value1  value2  difference
exam    0       200     -200
remark  2       240     -238
test    27      0       27
viewer  23      2990    -2967
total   55      3433    -3378

... и "зевает" не отображается в выводе.

GAWK может выполнять сортировку без внешней сортировки , но, насколько это возможно, я предпочитаю не отключать функции GAWKy.

3
27.01.2020, 23:17

Другое решение awk :

$ awk '
FNR==NR {
    a[$1] = $2;
    c[$1] = $1;
    next;
}
{
    b[$1] = $2;
    c[$1] = $1;
}   
END {
    printf "type\tvalue1\tvalue2\tdifference\n";
    for(i in c)
        printf "%s\t%d\t%d\t%d\n", i, a[i], b[i], a[i]-b[i]
}' file1 file2
type    value1  value2  difference
remark  2       240     -238
test    27      0       27
viewer  23      2990    -2967
exam    0       200     -200
2
27.01.2020, 23:17

Теги

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