Сложный ГРЭП. Как я могу изолировать этот номер?

В приложении Дополнительные драйверы проверьте наличие любых драйверы, относящиеся к STA, и отключите их.

Откройте Терминал и введите следующую команду:

sudo apt-get remove b43-fwcutter broadcom-sta-common broadcom-sta-source firmware-b43-installer firmware-b43-lpphy-installer firmware-b43legacy-installer bcmwl-kernel-source

Теперь введите следующие команды:

echo "blacklist bcma" | sudo tee -a /etc/modprobe.d/blacklist.conf
echo "blacklist brcm80211" | sudo tee -a /etc/modprobe.d/blacklist.conf

Перезагрузите Ubuntu.

Снова откройте Терминал и введите следующую команду:

sudo apt-get install bcmwl-kernel-source broadcom-sta-common broadcom-sta-source firmware-b43-installer

После завершения установки пакета перезагрузитесь.

Откройте Дополнительные драйверы .

Включите драйвер Broadcom STA.

Теперь ваш Wi-Fi должен быть активным и работоспособным.

1
26.07.2018, 15:24
4 ответа

Образец изменен на основе комментариев

$ cat ip.txt
  7 60,72,96 
  7 60 
3 601
 2 60,72,962
5 60,3
43 60   
3 52360

$ grep -oP '^\h*\K\d+(?=\h+60\h*$)' ip.txt 
7
43
  • -oPпечатать только совпадающую часть, использует PCRE
  • ^\h*\Kигнорировать начальные пустые символы строки
  • \d+номер для печати
  • (?=\h+60\h*$)только если за ним следуют пробелы, затем 60и затем необязательные пробелы до конца строки

Или просто используйте awkдля обработки полей;)

4
27.01.2020, 23:11

Удаление только первого поля из строк, где второе поле точно60(должно работать с любым awk, а не только с GNU awk):

awk '$2 == "60" {print $1}' < file 

Или с grepиsed:

grep -E '^[[:space:]]*[[:digit:]]+[[:space:]]+60[[:space:]]*$' < file |
   sed -e 's/^[[:space:]]*//' -e 's/[[:space:]].*//'

Уродливая -подобная -подкладка в awk для общего случая, когда вам нужны строки с 60, но исключаются именно те, которые также имеют пару72,96:

awk 'function f(n) { return ($2 ~ "(^|,)" n "(,|$)") }
     f(60) && ! (f(72) && f(96)) {print NR, $1}' < file 

Функция f(n)проверяет, находится ли nв списке чисел во втором поле (при условии, что числа разделены запятыми или началом/концом поля ). Затем просто проверяем, что 60присутствует, а пары 72,96нет. Результатом является номер строки(NR)и первое поле, но номер строки легко удалить, если он вам не нужен.

4
27.01.2020, 23:11

Мы можем использовать awk, чтобы разделить второе поле, разделенное пробелами -, на запятые. Если результат разделенного поля более чем одно значение, это не интересно, в противном случае, если это 60, напечатайте первый пробел -поле с разделителями:

awk 'split($2, a, ",") == 1 && $2 == 60 { print $1 }' <file

Для данного примера данных это печатает 7.

0
27.01.2020, 23:11

Попробуйте:

$ cat infile
63 41,3,11,12 
  1 31,60,72,96 
  7 41,3,31,14,15,68,59,60 
  7 60,72,96 
  7 60 
  1 41,3,31,31,14,15,68,59,60 
  60 41,3,115,12,13,66,96 
  1 41,3,11,12,13,66,96   7 60,72,96 
  7 60 
3 601
 2 60,72,962
5 60,3
43 60   
3 52360

$ grep -oP '^\s*[0-9]+(?= 60\s*$)' infile
  7
  7
43   

Описание:

grep -P '^             # grep from start of line
\s*                    # followed by optional spaces
[0-9]+                 # followed by some decimal digits
(?= 60\s*$)            # That have a <space>60<space(s)><end of line>
                       # but do not capture the 60.
' infile
1
27.01.2020, 23:11

Теги

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