В приложении Дополнительные драйверы
проверьте наличие любых драйверы, относящиеся к 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 должен быть активным и работоспособным.
Образец изменен на основе комментариев
$ 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
для обработки полей;)
Удаление только первого поля из строк, где второе поле точно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
)и первое поле, но номер строки легко удалить, если он вам не нужен.
Мы можем использовать awk
, чтобы разделить второе поле, разделенное пробелами -, на запятые. Если результат разделенного поля более чем одно значение, это не интересно, в противном случае, если это 60, напечатайте первый пробел -поле с разделителями:
awk 'split($2, a, ",") == 1 && $2 == 60 { print $1 }' <file
Для данного примера данных это печатает 7
.
Попробуйте:
$ 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