AWK: как удалить определенные строки, которые НЕ содержат определенный шаблон?

Я нашел открытую проблему для этой точной функции на GitHub Mosh . И открытая награда на bountysource в настоящее время составляет 616 долларов.

Похоже, это пока невозможно.

--

В качестве решения проблемы с отключением SSH я добавил следующие строки в/etc/ssh/sshd_config:

моего сервера.

ClientAliveInterval 60  # send null packet every x seconds to clients
ClientAliveCountMax 720  # time them out after doing so y times

Затем последовал перезапуск демона SSH и повторный -вход через SSH.

sudo /etc/init.d/ssh restart
sudo service ssh restart
sudo systemctl restart ssh

Это, конечно, не помогает в таких ситуациях, как смена вышек сотовой связи на мобильных соединениях, как это делает mosh.

0
30.03.2020, 20:58
3 ответа

Чтобы напечатать строки, которые заканчиваются буквенно-цифровым символом, просто:

$ awk '/[[:alnum:]]$/' file
MN_L_DAX-NORDNET_D36 - DK0060975886
MN_L_DAX-NORDNET_D35 - DK0060975613
2
19.03.2021, 02:31

Благодаря предложению @guillermo chamorro я смог добиться желаемого результата, изменив свой скрипт следующим образом:

awk '!/^.* -$/' sourcefile.txt > temp.txt && mv temp.txt sourcefile.txt

Спасибо, Гильермо.

1
19.03.2021, 02:31

Еще проще:

awk '$3' inputfile

Это сокращение от awk '$3!=""', что является сокращением от awk '$3!=""{print}', что является сокращением отawk '$3!=""{print $0}'

Для протокола:

sed /-$/dвозможно быстрее, а grep -ve '-$'еще быстрее.

2
19.03.2021, 02:31

Теги

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