PDA

Показать полную графическую версию : [решено] Не работает grep?


Dan Swano
08-04-2015, 12:25
Добрый день всем.
Не могу понять, что не так делаю. Я пытаюсь выделить из потока текстовых строк нужную строку, которая записана в файле, но 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
Не понял - а где слово, которое вы "грепаете"

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

Dan Swano
08-04-2015, 14:25
Я пытаюсь сравнить stdin с файлом и вывести на stdout слова, встреченные в файле.

ruslandh
08-04-2015, 22:06
Попробуйте для начала оставить в файле только:

TTECR_EIKS

Dan Swano
14-04-2015, 00:04
Если я оставляю в файле только одну строку, то пишет, как и положено
iw dev wlan0 scan | grep -f /root/wifi_nets.txt
SSID: TTECR_EIKS
Добавляю вторую строку и вышеприведенная команда выдает мне весь выхлоп команды iw dev wlan0 scan.
В чем же дело?

Dan Swano
17-04-2015, 14:37
Все, разобрался, были лишние пустые строки в файле в конце. Удалил (заодно с комментариями):

sed -e '/^[ \t]*$/d; /[ \t]*#/d' $WLAN_FILE > $TMPFILE

После чего grep отрабатывает, как надо.




© OSzone.net 2001-2012