Как распечатать только определенные символы?

Чистый awk :

$ awk -F'[, ]' 'NR==FNR{n[$2]=$1;next}{m[$3]+=n[$1]}
    END{for(i in m){print i " " m[i]}}' \
    file1 file2
degree1 2
degree2 5

Или вы можете поместить его в скрипт, как это:

#!/usr/bin/awk -f 
BEGIN {
    FS="[, ]"
}
{
    if (NR == FNR) {
        n[$2] = $1;
        next;
    } else {
        m[$3] += n[$1];
    }
}
END {
    for (i in m) {
        print i " " m[i];
    }
}

Первый набор полевого сепаратора на запятую и пространство (то есть Begin блок или параметр командной строки .

затем при расстановке первого файла ( FNR == NR IDIOM) Укажите ряд подключений для пользователя в массив, индексируемый именем пользователя. При расстановке следующих файлов добавьте количество подключений для каждого пользователя в массив, индексированный группой пользователей [

Наконец (конец конце блок) Сканируйте весь массив и распечатайте ключ, пары значений.

0
25.11.2014, 00:08
3 ответа

я думаю, что вы хотите эту команду:

ls -l partition | cut -c5-7 | tr rwx cse |sed 's/-//'

можно удалить одну дополнительную команду (, сокращает-d ''-f 1), и замените его последней командой сокращения (-c5-7 сокращения) и также добавьте sed 's/-//' в конце для удаления всего - с. Теперь вы сделаны. вам не было нужно к добавлению дополнительного | .

И еще лучше: можно также изменить тире ( - символ с Нулевым символом ( \0 ) как после):

ls -l partition | cut -c5-7 | tr 'rwx-' 'cse\0'

Замененный - символ с нулевым символом ( \0 ).

3
28.01.2020, 02:15

Альтернативный путь без ls:

getfacl -c partition | sed -n '/group::/{s/.*:://;y/rwx/cse/;s/-//g;p;}'
2
28.01.2020, 02:15

Еще одна альтернатива (трубопроводы два TR команды):

LS -L раздел | Cut -C5-7 |. tr -dc rwx | TR RWX CSE

1
28.01.2020, 02:15

Теги

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