Использование awk
awk -vOFS="\t" '{$4=a[$4]++?$4"_"a[$4]-1:$4}1' file
chr1 66999638 66999638 SGIP1 1 +
chr1 66999251 66999251 SGIP1_1 1 +
chr1 33545778 33549778 AZIN2 1 +
chr1 8376144 8380144 SLC45A1 1 +
chr1 16765166 16769166 NECAP2 1 +
chr1 33544713 33548713 AZIN2_1 1 +
chr1 25069759 25073759 CLIC4 1 +
chr1 33544729 33548729 AZIN2_2 1 +
chr1 50487626 50491626 AGBL4 1 -
chr1 92349836 92353836 TGFBR3 1 -
Устанавливает $ 4 равным самому себе, если было обнаружено только одно событие, или добавляет _
, тогда количество обнаруженных вхождений минус 1.
Я все еще копаюсь в деталях, но похоже, что эти файлы играют роль в управлении разрешениями /var/log
во время загрузки:
/usr/lib/tmpfiles.d/var.conf
/usr/lib/tmpfiles.d/00rsyslog.conf
По иронии судьбы, я нашел их, когда запустил grep -ri '/var/log' /var/log
на компьютере с Ubuntu 16.04 и увидел это сообщение:
./syslog.1:Jul 9 21:18:15 ubuntu-virtual-machine systemd-tmpfiles[616]: [/usr/lib/tmpfiles.d/var.conf:14] Duplicate line for path "/var/log", ignoring.
Я просмотрел этот файл и нашел это:
# This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # See tmpfiles.d(5) for details q /var 0755 - - - L /var/run - - - -../run d /var/log 0755 - - - f /var/log/wtmp 0664 root utmp - f /var/log/btmp 0600 root utmp - d /var/cache 0755 - - - d /var/lib 0755 - - - d /var/spool 0755 - - -
Я начал настраивать значения для строки d /var/log 0755 - - -
, но без каких-либо заметных изменений от моих усилий я поискал дальше в этом каталоге и нашел файл /usr/lib/tmpfiles.d/00rsyslog.conf
.
В этом файле:
# Override systemd's default tmpfiles.d/var.conf to make /var/log writable by # the syslog group, so that rsyslog can run as user. # See tmpfiles.d(5) for details. # Type Path Mode UID GID Age Argument d /var/log 0775 root syslog -
root@ubuntu-virtual-machine:/usr/lib/tmpfiles.d# dpkg -S /usr/lib/tmpfiles.d/00rsyslog.conf
rsyslog: /usr/lib/tmpfiles.d/00rsyslog.conf
Таким образом, пакет rsyslog предоставляет включаемый файл conf, который пытается переопределить значения, установленные в файле tmpfiles.d/var.conf
conf.
В результате, когда я удаляю rsyslog, применяются настройки файла tmpfiles.d/var.conf
conf, в данном случае это 0755
.
Мне необходимо дополнительно выяснить, предназначен ли tmpfiles.d
только для сопровождающих пакетов или системным администраторам также необходимо управлять файлами в этой области.
Редактировать:
Оказывается, есть три каталога,первый из них имеет наивысший приоритет (и предназначен для использования администраторами для переопределения настроек двух других):
/etc/tmpfiles.d/*.conf
/run/tmpfiles.d/*.conf
/usr/lib/tmpfiles.d/*.conf
Подробнее: