Вы можете попробовать использовать команду awk следующим образом:
nmap -sP 192.168.1.* | awk -F"[)(]" '/^Nmap/{Nmap=$(NF-1); C+=1} /^MAC Address/{print C"."$(NF-1) "("Nmap")" }'
выход,
1. Apple (192.168.1.21)
2. Liteon Technology (192.168.1.15)
пояснения:
при открытии awk -F
вы сообщаете 'awk', что ваши входные данные ограничены (
и/или )
, как мы указали в группах разделителей-F"[)(]"
'/.../{...} /.../{...}'
, это тело сценария awk, которое в вашем случае будет выполняться только первым /^Nmap/{Nmap=$(NF-1); C+=1}
или вторым /^MAC Address/{print C"."$(NF-1) "("Nmap")" }
или ни одной из этих двух частей условия, где мы указали, запускается только в том случае, если входная строка или строка начинается (^
, который является якорем начальной строки и указывает на начало строки/записи )с шаблонамиNmap
(или во второй части MAC Address
). любое найденное совпадение будет запускать коды внутри фигурных скобок{...}
Что делает первая часть?
Как объяснялось выше, если совпадение найдено, то сохраняется предпоследнее поле (NF
, указывающее на последнее поле (или его возвращаемое количество полей в записи на основе определенных разделителей, и $NF
его значение )значение в переменной Nmap
с $(NF-1)
; C+=1
- это переменная флага счетчика, которую мы использовали для подсчета количества совпадений, а также в конце, используя для списка идентификаторов в выводе
Что делает вторая часть?
то же, что и выше, но когда совпадение найдено ^MAC Address
, затем сначала выведите значение счетчика C
, выведите точку .
, затем выведите предпоследнее поле совпадающей строки и в конце выведите значение 'Nmap' в паратециях. который является IP-адресом предыдущей совпадающей строки
Используйтеchflags
(или chattr
в зависимости от вашей ОС ), чтобы сделать каталоги неизменяемыми:
sudo chflags -R uimmutable "$music_dir"
gfind "$music_dir" -mindepth 1 -type d -atime +90 -print > 'delete_list.txt'
sudo chflags -R nouimmutable "$music_dir"
cat 'delete_list.txt' | xargs rm -rf