Как исправить несогласованное количество блоков в 2 столбцах

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

SSH не имеет сложной PKI, ни сети доверия, популяризированной PGP, ни нисходящей системы сертификации, популяризированной HTTPS и SSL. В результате нельзя гарантировать, что служба, отвечающая на другом конце соединения, действительно была той, к которой вы пытались подключиться. Соединение могло быть перенаправлено на уровне TCP или IP под шифрованием, но шифрование не могло этого заметить.

Таким образом, при первом подключении к любому SSH-серверу он просит вас подтвердить внешними средствами, действительно ли отпечаток, предлагаемый сервером, соответствует отпечатку пальца сервера, к которому вы намеревались подключиться. Вы можете проверить это безопасным образом вне группы или, конечно, на свой страх и риск, вы все равно можете ответить «да» и рискнуть.

SSH имеет своего рода мини-PKI: после первого раза он запоминает отпечаток сервера, чтобы при повторном подключении к тому же серверу он мог проверить, тот же ли он, что и раньше .

0
09.06.2017, 09:53
3 ответа

Чтобы отфильтровать строки с разным количеством значений, разделенных запятыми, в 3-м и 4-м полях:

awk '{ nc3=split($3,a,","); nc4=split($4,a,",") } nc3 == nc4' data.in

Функция awk split разделит данное поле на регулярное выражение в его третьем аргументе (запятая в данном случае) и сохранит сгенерированные поля в массиве во втором аргументе (a здесь). Мы не используем результирующий массив, а вместо этого используем тот факт, что split также возвращает количество сгенерированных элементов массива.

Если эти числа (nc3 и nc4) совпадают, строка будет напечатана.

1
28.01.2020, 02:15

попробуй

awk 'split($3,A,",") == split($4,B,",")'

согласно man awk

split(s, a [, r [, seps] ]) Split the string s into the array a and the separators array seps on the regular expression r, and return the number of fields.

  • действие awk по умолчанию — это неявная печать
4
28.01.2020, 02:15

Простойawkподход:

awk -F"[[:space:]]+|," '!(NF%2){ print }' file

Выход:

143   164   2,4       54,32
532   843   6,4,5     43,23,53

  • !(NF%2)-рассмотрение только строк с четным числом элементов (обработка пробелов (s )и ,в качестве разделителей полей)
1
28.01.2020, 02:15

Теги

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