Перечислите всех пар слова, которые появляются в строке вместе в файле

Зарегистрируйтесь в своем VM, при помощи чего IP-адрес ifconfig. Если нет такого адреса затем, возможно, образование моста не работает. Так проверяют, получил ли сервер DHCP запрос на MAC-адрес сначала. Если не Windows 8 блокирует доступ, и/или Мост правильно не работает.

Если Ваш сервер DHCP выделяет IP для MAC-адреса, но ifconfig не имеет никакого значения затем существует что-то не так в CentOS, не хранящем IP, розданный сервером DHCP.

Если Вы имеете IP-адрес в VM, но не можете достигнуть его снаружи, то Вы проблема с брандмауэром Windows 8, не позволяющим достижение VM.

2
28.02.2014, 04:28
3 ответа

Вот решение awk :

% awk -F, '
{
    for(i = 1; i < NF; i++) {
        for(j = i+1; j <= NF; j++) {
            if(length(a[$i,$j]) == 0) {
                if(length(a[$j,$i]) > 0) {
                    next;
                }
                a[$i,$j]=$i" "$j;
                print a[$i,$j];
            }
        }
    }
}' file
Sarah Masha
Sarah Helen
Masha Helen
Connor Jessica
Connor Jennifer
Connor Candace
Jessica Jennifer
Jessica Candace
Jennifer Candace
Betty Sarah
Betty Helen
John Harold
John Frank
John Daisy
Harold Frank
Harold Daisy
Frank Daisy
4
27.01.2020, 21:54

Я предполагаю, что имена могут появляться в любом порядке и что Helen Sarah , следовательно, следует рассматривать как копию Sarah Helen . Если да, то это должно делать то, что вы хотите. Он очень похож на ответ Gnouc, но может обрабатывать дубликаты, которые появляются в другом порядке.

Я использовал немного другой входной файл, чем ваш, чтобы я мог проверить больше случаев:

Sarah,Masha,Helen
Betty,Sarah,Helen
John,Harold,Frank,Daisy
Masha,Sarah,Helen,Gerorge
Helen,Sarah,Masha

Вот gawk как однострочник и его вывод:

$ awk -F, '{for(i=1;i<NF;i++){for(j=i+1;j<=NF;j++){if($i > $j){k[$i][$j]}else{k[$j][$i]}}}}END{for(n in k){for (l in k[n]){print n,l}}}' names.txt  
John Daisy
John Frank
John Harold
Sarah Masha
Sarah Betty
Sarah Helen
Frank Daisy
Masha Helen
Harold Daisy
Harold Frank
Helen Betty

И вот то же самое:

{
    ## For all fields from first to penultimate
    for(i=1;i<NF;i++){
      ## For all fields from second to last
      for(j=i+1;j<=NF;j++){
        ## This is to avoid duplicates, $i and $j are names
        ## by comparing (sorting) them, I make sure that they
        ## will be stored in the array consistently so I will
        ## count 'Dick Harry' as a duplicate of 'Harry Dick'
        if($i > $j){
          k[$i][$j]
        }
        else{
          k[$j][$i]
        }
    }
  }
}
END{
    ## Go through the array k tath holds the name pairs
    for(n1 in k){
      ## It is a  2 dimensional array so n1 is the first name
      ## and n2 will be the second
      for (n2 in k[n1]){
          print n1,n2
      }
    }
}
2
27.01.2020, 21:54

Другой awk

awk -F, '
  {
    for(i=1; i<=NF; i++)
      for(j=i+1; j<=NF; j++)
        if(!(A[$i,$j]++*A[$j,$i]++))
          print $i,$j
  }
' file
0
27.01.2020, 21:54

Теги

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