Давайте рассмотрим, что сначала делает ваша команда 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
Для получения дополнительной информации, пожалуйста, обратитесь к этим сообщениям:
Добавьте следующие строки в свой 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