Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование в *nix (http://forum.oszone.net/forumdisplay.php?f=35)
-   -   [решено] Не работает grep? (http://forum.oszone.net/showthread.php?t=298090)

Dan Swano 08-04-2015 12:25 2493148

Не работает grep?
 
Добрый день всем.
Не могу понять, что не так делаю. Я пытаюсь выделить из потока текстовых строк нужную строку, которая записана в файле, но grep как-то не так отрабатывает. Я уже разные опции испробовал, не помогает. Подскажите, где косяк?
Исследую выхлоп команды iw dev wlan0 scan, ищу нужный SSID, который записан в текстовый файл wifi_nets.txt:
Код:

iw dev wlan0 scan | grep -f /root/wifi_nets.txt
Содержимое файла wifi_nets.txt:
Код:

# Only WPA networks
# File format: 1st line - WLAN SSID, 2nd line - access key started with "KEY:". Quotes is not required!
TTECR_EIKS
KEY:12345678
ds_restricted
KEY:87654321

Вместо того, чтобы выдать что-то вроде "SSID: TTECR_EIKS", команда выдает полный выхлоп. Пробовал и так:
Код:

iw dev wlan0 scan 2>&1| grep -f /root/wifi_nets.txt
результат тот же.
Пытаюсь я это всё сделать на роутере с OpenWRT, grep брал как встроенный в busybox 1.22.1, так и GNU grep 2.21. А идея в том, чтобы найти нужную сеть, имя которой записано в текстовый файл, взять оттуда ключ и подключиться к ней.

ruslandh 08-04-2015 13:47 2493201

Не понял - а где слово, которое вы "грепаете"

https://ru.wikipedia.org/wiki/Grep

Dan Swano 08-04-2015 14:25 2493216

Я пытаюсь сравнить stdin с файлом и вывести на stdout слова, встреченные в файле.

ruslandh 08-04-2015 22:06 2493391

Попробуйте для начала оставить в файле только:

TTECR_EIKS

Dan Swano 14-04-2015 00:04 2495375

Если я оставляю в файле только одну строку, то пишет, как и положено
Код:

iw dev wlan0 scan | grep -f /root/wifi_nets.txt
        SSID: TTECR_EIKS

Добавляю вторую строку и вышеприведенная команда выдает мне весь выхлоп команды iw dev wlan0 scan.
В чем же дело?

Dan Swano 17-04-2015 14:37 2497132

Все, разобрался, были лишние пустые строки в файле в конце. Удалил (заодно с комментариями):
Код:

sed -e '/^[ \t]*$/d; /[ \t]*#/d' $WLAN_FILE > $TMPFILE
После чего grep отрабатывает, как надо.


Время: 07:41.

Время: 07:41.
© OSzone.net 2001-