Извлечь части двух строк в одну - PullRequest
0 голосов
/ 26 сентября 2018

Мне нужна командная строка, которая преобразует этот ввод:

    capability: ESS Privacy ShortPreamble ShortSlotTime (0x0431)
    signal: -68.00 dBm
    last seen: 0 ms ago
    SSID: ENH202.FW
    Supported rates: 1.0* 2.0* 5.5* 11.0* 6.0 9.0 12.0 18.0

в эту строку вывода:

SSID: ENH202.FW  -68.00 dBm

Это вдохновлено следующей командой, которая читает доступные сети Wi-Fi:

sudo iw dev wlan0 scan | grep SSID

, в котором перечислены все сети путем печати каждого вхождения единственной строки, содержащей SSID.Я хотел бы, чтобы одно и то же сканирование показывало мощность каждого SSID.

Есть ли способ использовать инструменты командной строки, чтобы получить этот список с включенными уровнями сигнала?

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Устанавливает значение переменной st при достижении сигнальной линии, а затем печатает его после строки SSID.

sudo iw dev wlan0 scan | awk '/signal:/{st=$2$3} /SSID:/{print $0" "st}'
0 голосов
/ 26 сентября 2018

Команда sed может сделать это:

sed -n -e '/signal:/h' -e '/SSID:/{G;s/signal://;s/\n//;p}' <inputfile>

Объяснение:

Флаг -n указывает sed не печатать строки.

Первый -eвыражение находит строку с «signal:» в ней и помещает ее в пространство удержания.Вторая находит строку с SSID: в ней, G добавляет пробел к этой строке, s/signal:// удаляет часть 'signal:', а s/\n// удаляет возврат каретки.Наконец, p указывает sed напечатать пространство шаблона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...