Ответ Стефана Шазела хорош, но не учитывает заголовок данных. Также предполагается, что конкретный ID
всегда соответствует одним и тем же NAME
и COMPANY
.
Если это не так, то вам придется сделать это немного по-другому:
sort -k1,1 -k4,4 file.in | awk '{ print $0, ++n[$1] }'
Чтобы получить правильный заголовок:
sed '1d' file.in |
sort -k1,1 -k4,4 |
awk -vOFS="\t" \
'BEGIN { print "ID", "NAME", "COMPANY", "YEAR", "Count" }
{ print $0, ++n[$1] }'
Это удаляет заголовок из ввода, сортирует файл по ID
и YEAR
, а затем повторно -вставляет заголовок с новым столбцом Count
. Затем он увеличивает счетчик для каждого ID
и выводит текущее значение этого счетчика в последнем столбце для каждой строки ввода :
.
ID NAME COMPANY YEAR Count
111 LUIS TCS 2015 1
111 LUIS TCS 2015 2
111 LUIS TCS 2016 3
222 URSO XYZ 2014 1
222 URSO XYZ 2015 2
333 OMAR ABC 2014 1
333 OMAR ABC 2015 2
444 SANJIB MABE 2011 1
444 SANJIB MABE 2012 2
Если вы хотите, чтобы awk
выбрал исходный заголовок из файла и просто добавил заголовок Count
без необходимости вводить его снова, вы также можете сделать это:
sed -e '1w /tmp/header.txt' -e '1d' file.in |
sort -k1,1 -k4,4 |
awk -vOFS="\t" \
'NR == 1 { getline h <"/tmp/header.txt"; print h, "Count" }
{ print $0, ++n[$1] }'
rm -f /tmp/header.txt
Это заставляет sed
записать заголовок в файл /tmp/header.txt
. Когда первая запись читается awk
, этот файл считывается в переменную h
и выводится вместе с новым столбцом Count
. Остальная часть скрипта awk
работает так же, как и раньше, и выдает тот же результат.
Файл /tmp/header.txt
гарантированно существует для чтения скриптом awk
, поскольку он не будет прочитан до тех пор, пока не будет получена первая входная запись. В этот момент sort
использует все входные данные из sed
, что означает, что заголовочный файл должен быть записан. Чтение его в блоке BEGIN
потенциально не сработает.
Взгляните на sshd _справочную страницу конфигурации , PermitRootLogin раздел:
PermitRootLogin
Specifies whether root can log in using ssh(1). The argument
must be yes, prohibit-password, without-password,
forced-commands-only, or no. The default is yes.
If this option is set to prohibit-password or without-password,
password and keyboard-interactive authentication are disabled for
root.
If this option is set to forced-commands-only, root login with
public key authentication will be allowed, but only if the
command option has been specified (which may be useful for taking
remote backups even if root login is normally not allowed). All
other authentication methods are disabled for root.
If this option is set to no, root is not allowed to log in.
Вероятно, ваш файл имеет значение нет . Попробуйте изменить его на yes , перезапустите службу ssh и повторите попытку.