Сценарий оболочки для присоединения к двум файлам

Взгляните на файлы в/etc/cups

У меня нет системы Fedora 15 для вручения - но рассмотрение недавнего поля RHEL, соответствующие биты находятся в/etc/cups/cupsd.conf

....
# Administrator user group...
SystemGroup sys root
....
# Restrict access to configuration files...
<Location /admin/conf>
  AuthType Basic
  Require user @SYSTEM
  Order allow,deny
  Allow localhost
</Location>
....
 # All administration operations require an adminstrator to authenticate...
<Limit Pause-Printer Resume-Printer Set-Printer-Attributes Enable-Printer 
     Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs 
     Release-Held-New-Jobs Deactivate-Printer Activate-Printer 
     Restart-Printer Shutdown-Printer Startup-Printer Promote-Job 
     Schedule-Job-After CUPS-Add-Printer CUPS-Delete-Printer 
     CUPS-Add-Class CUPS-Delete-Class CUPS-Accept-Jobs 
     CUPS-Reject-Jobs CUPS-Set-Default>
  AuthType Basic
  Require user @SYSTEM
  Order deny,allow
</Limit>

IIRC, @SYSTEM является макросом для групп, перечисленных в SystemGroup

8
13.09.2015, 00:44
2 ответа

join ...

join -1 2 -2 1 FileB FileA

Вывод

user_a process_1 tel_a addr_a
user_a process_2 tel_a addr_a
user_b process_3 tel_b addr_b

Входные файлы должны быть отсортированы по полю ключа... Ваши файлы в качестве примера уже отсортированы, таким образом, не было никакой потребности, но иначе Вы могли включить вид следующим образом.

join -1 2 -2 1 <(sort -k2 FileB) <(sort FileA)
15
27.01.2020, 20:09
  • 1
    Что означает параметры числа? –  Navid Farhadi 26.02.2012, 21:31
  • 2
    @Navid обновления: можно всегда получать лучшее и наиболее детальное описание параматерей команды путем обращения к руководству путем ввода man join в командную строку терминала... -1 2  -2 1 средства: соединение на '2-м поле 1-го файла' и '1-м поле 2-го файла' –  Peter.O 26.02.2012, 21:44

С тех пор join и paste не доступны везде (они не находятся в моей находящейся в BusyBox системе, например), вот то, как сделать это с awk, согласно просьбе:

awk 'BEGIN {
    while( (getline < "fileA") > 0) A[$1]=$2 OFS $3 # read fileA into the array A
    close("fileA")
  } {
    print $2, $1, A[$2]
  }' fileB
3
27.01.2020, 20:09
  • 1
    BTW Вы пропустили разделитель A[$1]=$2 OFS $3 ... Вот другой вариант, который избегает, чтобы ручной цикл в НАЧАЛСЯ, но это - в значительной степени то же (к awk), хотя он действительно представляет в других отношениях ненужный тест условия для второго файла: awk 'NR==FNR {A[$1]=$2 OFS $3;next} {print $2, $1, A[$2]}' fileA fileB ... (+1) –  Peter.O 20.04.2012, 02:13

Теги

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