Печатать совпадающие строки из двух файлов, содержащих столбцы чисел

, если вы перейдете к

cd /usr/share/nmap/scripts  

вы увидите множество предустановленных скриптов в Kali Linux. вот как вы используете их с nmap.

nmap --scripts=ssh.brute.nse TargetIpAdress

в том же каталоге, если вы наберете

nano ssh-brute.nse

вы получите доступ к скрипту для изменения некоторых опций.

Вы также можете скачать скрипты nse с github. вот 2 из них.

git clone https://github.com/scipag/vulscan
git clone https://github.com/vulnersCom/nmap-vulners

реализация этих скриптов немного отличается. в каталоге этих скриптов

nmap --script vulscan targetIpAddress
0
24.08.2021, 08:40
1 ответ

Мы можем сделать это, используя следующий подход, в котором мы используем sedдля руководства grepпри поиске строк с учетом их соседства:

sed -e 's/.*/\\<&\\>/' f1 | grep -Ef - f3col

Выходы:-

1 2 3
5 10 15
10 11 12
150 151 152

Используя awk, мы можем сделать так, как показано. Сначала мы формируем ассоциативный массив a[...]со столбцами файла с одним столбцом -. После этого в каждой строке файла с тремя столбцами -мы инициализируем флаг pи увеличиваем его всякий раз, когда есть данные из файла с одним столбцом, соответствующие любому из полей. Затем в конце цикла for мы условно печатаем запись reCord, если флаг когда-либо увеличивался хотя бы один раз.

awk '
NR==FNR{a[$1];next}
{
  for (p=i=1; i<=NF; i++) if ($i in a) p++
}p>1
' f1 f3col

pythonизначально поддерживает структуру данных set, которую мы делаем, как показано ниже, где печать происходит, когда пересечение наборов непусто:

python3 -c 'import sys
file1,file2 = sys.argv[1:]

with open(file1) as f1, open(file2) as f2:
  s1 = { _.rstrip() for _ in f1 }
  for _ in f2:
    s2 = set(_.rstrip().split())
    if bool(s2 & s1):
      print(_,end="")
' f1 f3col

Используя конструкции POSIX sed, мы сначала генерируем код POSIX sed, используя файл с одним столбцом, а затем применяем его к файлу с тремя -столбцами:

sed -e '
  h;G;G
  s/.*/^&$/
  s|\n| /b&/ |g
  s|.*|/&/b|;$a\
d
' f1 | sed -f - f3col

perlможно сделать это несколькими способами:

perl -lane '
  @A || chomp(@A=<STDIN>);
  for my $f (@F) {
    print,last if grep { $f == $_ } @A;
  }
' f3col < f1

perl -MList::Util=any -lane '
  chomp(@A=<STDIN>) if !@A;
  print if 
    any {
      my $f = $_;
      any { $_ == $f } @A;
    } @F;
' f3col < f1
1
25.08.2021, 01:41

Теги

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