Как удалить записи на основе частоты трехстороннего взаимодействия с использованием awk

Согласно deian-wiki вам необходимо установить пакеты broadcom-sta-dkms , а затем загрузить драйвер wl

Добавить несвободный репозиторий :

# Debian 8 "Jessie"
deb http://httpredir.debian.org/debian/ jessie main contrib non-free

Установить пакет broadcom-sta-dkms и зависимости:

apt-get update
apt-get install linux-image-$(uname -r|sed 's,[^-]*-[^-]*-,,') linux-headers-$(uname -r|sed 's,[^-]*-[^-]*-,,') broadcom-sta-dkms

Выгрузить конфликтующие драйверы:

modprobe -r b44 b43 b43legacy ssb brcmsmac bcma

Загрузить модуль wl :

modprobe wl

2
27.01.2017, 19:52
3 ответа

Поскольку идентификатор может различаться в зависимости от одних и тех же факторов, вы можете прочитать файл дважды - сначала, чтобы подсчитать, сколько раз у вас было V2_V3_V4 , а затем еще раз, чтобы проверить каждую строку и распечатать, только если счет из 1-й проход был больше или равен n (в данном случае 5):

awk -vn=5 'NR==FNR{++z[$2"_"$3"_"$4];next};
FNR==1{print;next};z[$2"_"$3"_"$4]>=n' infile infile
0
27.01.2020, 22:10

Я не знаю математики для частоты, но мне нравится awk! Вот сценарий, который выполняет итерацию по каждой записи вашего тестового файла, выполняет умножение чисел и сравнивает их, чтобы увидеть, меньше ли они 5. Если меньше 5, не печатайте. В противном случае распечатайте.

#! / Usr / bin / awk -f НАЧАТЬ { print "ID V2 V3 V4 = PRODUCT"; } {{{1 }} TOTAL = int ($ 1 * $ 2 * $ 3); if (TOTAL <5) { # Не печатать } {{1} } else { напечатайте $ 1, "", $ 2, "", $ 3, "=", ИТОГО; } }

0
27.01.2020, 22:10

Так как «V2» больше 2000 и ни один другой столбец не меньше 1, произведение этих столбцов всегда будет больше пяти с учетом ваших данных выборки. Однако:

awk '($2*$3*$4) > 5 { print } NR==1 { print }' /path/to/data
2
27.01.2020, 22:10

Теги

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