Я определенно могу считать новичком sed/awk. Я работал над многоступенчатым фильтром без успеха. Каждый сегмент дает результаты, когда он работает сам по себе, но когда я их объединяю, я ничего не получаю. Я пробовал sed | awk, awk | sed, sed | sed, awk | awk. Они все терпят неудачу, поэтому я предполагаю, что это хорошо известно всем, кроме меня.трубопровод | awk или awk | sed
Данные представляют собой многострочные блоки текста, где каждый блок можно рассматривать как запись (следовательно, разделитель «>»). После того, как мы фильтруем только блоки ADV_NONCONN, я бы хотел отфильтровать блок текста только для строк, содержащих «bdaddr» или «RSSI». Насколько мне известно, для этого мне нужно будет выполнить отдельную операцию.
sudo hcidump | awk 'BEGIN {RS=">"} /ADV_NONCONN/' | sed -n -e "/bdaddr/p" -e "/RSSI/p" > log.txt
выход hcidump образца (один "запись"):
HCI Event: LE Meta Event (0x3e) plen 43
LE Advertising Report
ADV_NONCONN_IND - Non connectable undirected advertising (3)
bdaddr 0C:F3:EE:0D:70:89 (Public)
Flags: 0x06
Unknown type 0xff with 26 bytes data
RSSI: -62
Запуск обратного (СЭД часть первой, а затем AWK) дает те же результаты, пустые набор. Какую простую вещь я пропустил?
Это почти никогда не нужно трубы '' awk' к sed', так как 'awk' может делать большинство вещей, которые' sed' могут сделать , а синтаксис 'awk' обычно легче понять. – Barmar
Позвольте мне дать вам несколько отзывов: как ваш вопрос, так и ваш собственный ответ являются болтливыми до точки отвлечения внимания - пожалуйста, подумайте о том, чтобы сделать их более краткими и целенаправленными. – mklement0
Кроме того, некоторые стандартные рекомендации для новичков: если ответ решает вашу проблему, пожалуйста, примите его, нажав на большой галочкой (✓) рядом с ним и, возможно, также проголосуйте за него (для голосования на голосование требуется не менее 15 точек репутации). Если вы нашли другие ответы полезными, попробуйте их проголосовать. Приём и голосование помогают будущим читателям. См. [Соответствующую статью справочного центра] (http://stackoverflow.com/help/someone-answers). Если ваш вопрос еще не полностью ответил, пожалуйста, сообщите об этом. Если вы считаете, что нашли самое лучшее решение самостоятельно, отправьте его как ответ и само-принимайте. – mklement0