Vlookup с повторяющимися значениями через AW K

На SuSE вы можете настроить сеть вручную через файлы в /etc/sysconfig/network. Создайте файл с именем /etc/sysconfig/network/ifcfg-eth1 содержащий

STARTMODE=onboot
BOOTPROTO=static
IPADDR=10.0.0.xxx
NETMASK=255.255.255.0
BROADCAST=10.0.0.255

Маршрут по умолчанию должен быть установлен в /etc/sysconfig/network/routes.

default 10.0.0.1 - eth1

1
07.06.2018, 18:18
2 ответа

Awksolución:

awk 'NR == FNR { a[$1] = $2 OFS; next }
     $2 in a { a[$2] = a[$2] (a[$2] ~ /\t$/? "" : ",") $1 }
     END { for (i in a) print i, a[i] }' OFS='\t' file1 file2

La salida:

bhy 30  c
abc 10  a,d,e
xyz 20  b,f

Para su última condición use la siguiente modificación:

awk 'NR == FNR { a[$1] = $2 OFS; next }
     $2 in a { a[$2] = a[$2] (a[$2] ~ /\t$/? "" : ",") $1 }
     END {
         for (i in a) print i, a[i] (a[i] ~ /\t$/? "Not_Available" : "")
     }' OFS='\t' file1 file2
0
28.01.2020, 00:34

Con awk

awk -v OFS='\t' '
    NR == FNR {val[$1]=$2; next} 
    {items[$2] = items[$2] " " $1}
    END {
        for (a in val) {
            sub(/^ /, "", items[a])
            gsub(/ /, ",", items[a]) 
            print a, val[a], items[a]
        }
    }
' file1 file2
bhy     30      c
abc     10      a,d,e
xyz     20      b,f

Si desea ordenarlo, canalícelo hacia| sort -k2,2n

Solo por diversión, un truco de Perl

perl -lae '
    if ($. == ++$nr) { $val{$F[0]} = $F[1] }
    else             { push @{$items{$F[1]}}, $F[0] }
  } continue {
    close ARGV if eof
  } END { 
    printf "%s\t%s\t%s\n", $_, $val{$_}, join(",", @{$items{$_}}) for keys %items 
' file1 file2
0
28.01.2020, 00:34

Теги

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