Uniq на основе последнего поля, с сохранением последней строки и добавлением количества дубликатов

Все в ~/.profileи ~/.bashrcзапускается после/etc/profileи /bash.bashrc. Таким образом, любые псевдонимы или переменные, установленные в первом, заменят те, что установлены во втором, если они имеют одно и то же имя.

Кому бы это ни помогло, :конкретная проблема, с которой я столкнулся, связана с тем, что я переношу серверы и прошу своих пользователей сделать резервную копию всех важных файлов, которые у них есть, и поместить их обратно на новый сервер. Когда они сделали это, они включили ~/.bashrc, потому что у него был «трюк, который заставляет работать Python» (, то есть он устанавливал переменную PATH для включения каталога anaconda), а также некоторые настройки, которые я сделали на своих компьютерах на предыдущем сервере. Это было в конфликте с новыми псевдонимами, которые я устанавливаю (, например. псевдоним для source activate, который стал conda activate), а начиная с conda 4.4, conda.shследует добавить к /etc/profiles.d/, а не вручную устанавливать переменную PATH.

0
16.09.2020, 19:47
2 ответа
tac file | uniq -c -f 2 | awk '{$(NF+1)=$1;$1=""}1' | tac

tacпечатает файл из в обратном порядке. Это гарантирует, что последнее вхождение повторяющихся строк будет сохранено.

uniq -c -f 2сравнивает только последнее поле, пропуская первые два с -f 2. Он добавляет к количеству повторяющихся строк флаг -c, поэтому мы должны перенести числовое значение в последнее поле. Вот что делает awk '{$(NF+1)=$1;$1=""}1'.

Наконец, tacприводит все в порядок.

 [2020-09-15 09:03:21.935335] 1021 2
 [2020-09-15 09:03:25.835335] 1022 2
 [2020-09-15 09:05:23.835335] 1023 4
1
18.03.2021, 23:04
$ awk '{map[$3]=$1" "$2; cnt[$3]++} END{for (key in map) print map[key], key, cnt[key]}' file
[2020-09-15 09:03:21.935335] 1021 2
[2020-09-15 09:03:25.835335] 1022 2
[2020-09-15 09:05:23.835335] 1023 4

В приведенном выше примере строки будут выводиться в случайном порядке.если им нужно сохранить порядок ввода, это небольшая настройка.

1
18.03.2021, 23:04

Теги

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