unix sed убирает имена адаптеров

И вот Perl способ:

perl -F, -ane 'print if $#F==10'

-n заставляет perl считывать строку входного файла и выполнять сценарий, заданный -e в каждой строке. -a включает автоматическое разделение: каждая входная строка будет разделена на значение, заданное -F (здесь запятая), и сохранена как массив @ F .

$ # F (или, в более общем случае, $ # массив ) является самым высоким индексом массива @ F . Так как массивы начинаются с 0 , строка с 11 полями будет иметь значение @ F от 10 . Поэтому сценарий печатает строку, если в ней ровно 11 полей.

-121--42437-

Если сеанс остается активным, он остается активным. Там нет никаких трюков, просто буфер и TCP делает это дело.

Если соединение с ssh-сеансом потеряно, а затем восстановлено из-за "плохого" подключения к Интернету, приложение, запущенное в этом сеансе, никогда не знает. Сеанс продолжается.

Отключение монитора (при просмотре консоли) не должно влиять на приложение, запущенное на этой консоли.

-121--69302-

Но повлияет ли отключение на содержимое файла? Я думал, это не так.

Если соединение прервано, сеанс завершается, и оболочка и команда прекращаются. Вы заинтересованы в выполнении команд на удаленном сервере, даже если вы отключаетесь, вы должны искать nohup команду, экран или tmux мультиплексор или mosh для плохих оболочек соединения.

0
17.10.2018, 12:50
3 ответа

Заменить пробелы запятыми, удалить слова перед двоеточием, удалить начальный пробел, удалить запятые перед пробелами:

sed 's/ /,/g; s/[^,]*:,/ /g;s/^ //;s/, / /g'

Выход:

16,3979 211,411,3978 15,3977 111,178,179,311,511,1719,3976
1
28.01.2020, 02:42

Вы можете sedсначала удалить шаблон, содержащий ent, а затем удалить интервал и заменить его на ,как

sed 's/ent[0-9][0-9]: //g; s/ /,/g'
0
28.01.2020, 02:42

Использование GNU awkилиmawk(для поддержки регулярных выражений вRS):

$ mawk -v RS='ent[0-9][0-9]: ' -v ORS=' ' -v FS=' ' -v OFS=',' '
    $1 != "" { $1=$1; print }
    END      { printf("\n") }' <file
16,3979 211,411,3978 15,3977 111,178,179,311,511,1719,3976

Или, что то же самое,

$ mawk 'BEGIN    { RS="ent[0-9][0-9]: "; ORS=FS=" "; OFS="," }
        $1 != "" { $1=$1; print } 
        END      { printf("\n") }' <file
16,3979 211,411,3978 15,3977 111,178,179,311,511,1719,3976

Это обрабатывает одну строку как набор записей, разделенных entNN:(, где N— некоторая цифра ). Каждая запись читается как набор полей, разделенных пробелом -.

Тест $1 != ""пропускает первую пустую запись (перед первым разделителем записей ничего нет )и соответствующий блок переформатирует запись для вывода, просто выполнив $1=$1. Это заставит awkпереформатировать его, используя предоставленные значения ORSи OFS.

0
28.01.2020, 02:42

Теги

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