Ошибка установки Kali Linux на MacBook Pro (без Wi-Fi)

Давайте рассмотрим, что сначала делает ваша команда grep :

  • -o сообщает grep выводить только соответствующую часть вместо всей строки
  • флаг -E позволяет использовать расширенные регулярные выражения
  • '[^] + $' будет соответствовать любому непробельному символу, повторяемому один или несколько раз в конце строки - в основном слово в конце строки.

Тестовый запуск:

$ cat input.txt
to be or not to be
that is the question
$ grep -oE '[^ ]+$' input.txt                                      
be
question

Как мы можем сделать то же самое в awk ? Что ж, это достаточно просто, учитывая, что awk по умолчанию работает с разделенными пробелами записями каждой строки (мы называем их словами - awk называет их полями). Таким образом, мы можем вывести $ NF с помощью awk - взять переменную NF для количества полей и рассматривать ее как относящуюся к конкретному полю. Но обратите внимание, что команда grep будет соответствовать только непустым строкам, т.е. там есть хотя бы одно слово. Таким образом, нам нужно условие для awk - работать только со строками, у которых NF количество полей больше нуля.

awk 'NF{print $NF}' input.txt

Следует отметить, что GNU awk по крайней мере поддерживает расширенное регулярное выражение (я не так хорошо знаком с другими, поэтому не буду делать заявлений о других). Таким образом, мы могли бы также написать вариант ответа cuonglm:

$ awk '{if(match($0,/[^ ]+$/)) print $NF}' input.txt               
be
question

С GNU sed можно также использовать расширенные регулярные выражения - для этого требуется флаг -r , но вы не можете просто используйте то же регулярное выражение. Необходимо использовать обратную ссылку с \ 1 .

$ cat input.txt                                                                                                          
to be or not to be
that is the question
blah 

$ sed -r -e 's/^.* ([^ ]+)$/\1/' input.txt                                                                             
be
question
blah

Можно получить желаемый результат с помощью такого базового регулярного выражения:

$ cat input.txt                                                    
to be or not to be
that is the question
blah 
$ sed 's/^.* \([^ ].*\)$/\1/' input.txt                           
be
question
blah 

Для получения дополнительной информации, пожалуйста, обратитесь к этим сообщениям:

1
01.09.2016, 16:06
1 ответ

Добавьте следующие строки в свой sources.list :

deb http://http.kali.org/kali kali-rolling main contrib non-free
deb-src http://http.kali.org/kali kali-rolling main contrib non-free

Удалите broadcom-sta-dkms

apt-get remove broadcom-sta-dkms

и

apt-get update && apt-get dist-upgrade
reboot

Обновите и переустановите его:

apt-get update; apt-get install broadcom-sta-dkms; apt-get install linux-image-$(uname -r|sed 's,[^-]*-[^-]*-,,') linux-headers-$(uname -r|sed 's,[^-]*-[^-]*-,,') broadcom-sta-dkms

Загрузите wl модуль:

modprobe -r b44 b43 b43legacy ssb brcmsmac bcma
sudo modprobe wl
2
27.01.2020, 23:47

Теги

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