Многие люди до сих пор используют RHEL 5 / CentOS 5 по нескольким причинам. К сожалению, RHEL 5 больше не поддерживается, и, кроме того, никогда не было пакета с OpenSSL >= 1 для RHEL 5.
Если вас не беспокоит использование иностранного репозитория, вы можете использовать репозиторий tuxad.Он предоставляет другой и более простой способ обновить OpenSSL RHEL 5 до версии RHEL 6 (, которая все еще поддерживается ):
.
Более подробную информацию можно найти здесь:
www.tuxad.de/blog/archives/2014/11/19/openssl _updateenhancements _для _rhel __centos _5 www.tuxad.de/blog/archives/2018/07/21/tuxad _rh5 _репозиторий _теперь _с _phpopenssl1
Этот репозиторий содержит несколько пакетов, перестроенных для OpenSSL 1:
awk '{$1+=seen[$1]++} 1' file
Перед печатью добавить пост -увеличенное хэш-значение к текущему значению $1.
В приведенном выше примере будут повторяться числа, когда значения расположены близко друг к другу, например, последовательность 2,2,3 — результат равен 2,3,3. Для этого можно использовать цикл 2,3,4:
awk '{while (c[$1]) {$1 += c[$1] += c[$1+c[$1]]} c[$1]++} 1'
Массив c
хранит смещение, на которое должен быть увеличен $1 (аналогично seen
в первом примере ). Вместо того, чтобы увеличивать $1 только на смещение для этого уникального значения, оно также увеличивается на смещение от следующего значения до тех пор, пока не будет достигнут новый ранее невидимый $1.
Вариант ответа @guest , который защищает от дублирования на выходе путем увеличения числа, если оно уже было выведено ранее:
awk '{while ($1 in c) $1 += c[$1]++; c[$1]++; print}' file
Или то же самое в perl
, обработка чисел везде, где они есть на входе:
perl -pe 's{\d+}{
$i = $&;
while (defined($c{$i})) {$i += $c{$i}++}
$c{$i}++;
$i
}ge' file
На входе типа:
1
1
1
5
5
10
10
1
1
1
Дают:
1
2
3
5
6
10
11
4
7
8