Как получить определенные поля из вывода «Сведения о соседях CDP»?

Очевидно, что закрытие stdout не приводит к неудаче, наоборот, это удается, потому что запись на него не удается, как видно из сообщения об ошибке. Edit: чтобы уточнить мой ответ, скажу, что сначала вы говорите оболочке закрыть дескриптор файла, а затем программа ls пытается записать на него. Отсюда и возникает сообщение об ошибке.

2
17.02.2017, 20:34
3 ответа

Если файл журнала не много гигабайт,

 perl -0ne 'for( /Device ID.*?Port ID.*?\n/sg ){ print "-"x 20,"\n$_\n"}' file
0
27.01.2020, 21:59

Есть ли у вас возможность использовать egrep вместо awk?

egrep "Device|IP\ address|Interface|Port\ ID" input-file.txt
0
27.01.2020, 21:59

Это напечатает любую строку, которая соответствует полям, которые вы ищете:

awk '/Device ID|IP address|Interface|Port ID/ { print }' /path/to/input

You может сделать то же самое с grep , sed и другими подобными инструментами.

Вы можете даже немного пофантазировать:

grep -Eo '(Device ID|IP address|Interface|Port ID): [^ ]+' /path/to/input
4
27.01.2020, 21:59

Теги

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