Как удалить дублирующиеся строки с awk при хранении пустых строк?

Таким образом, действительно ли возможно проверить, сколько сессий работает, и будет возможно проверить на http также?

Веб-приложение должно быть настроено или запрограммировано для перечисления активных сессий, но для списка пользователей и время простоя для сессий SSH...

w | tr -s " " | cut -d " " -f 1,5 | tail -n +3

Посмотрите раздел NOTES в странице справочника для w. Строка выше продуктов что-то вроде этого:

username1 0.00s
username2 48.08s

Или, только время простоя:

w | tr -s " " | cut -d " " -f 5 | tail -n +3

Или, просто количество сессий SSH:

 w | tr -s " " | cut -d " " -f 5 | tail -n +3 | wc -l
13
23.05.2017, 15:40
6 ответов
[1172399] Другой вариант - проверить [1172773] NF[1172774], например:

28
27.01.2020, 19:52
  • Все, что вам нужно сделать, это сначала проверить на пустую (действительно пустую или просто пустую) строку.[1172382]
  • 5
    27.01.2020, 19:52
    [1172395]Альтернативно

    Главный трюк тот же самый, [1172759]seen[$0]++[1172760] создает запись в ассоциативном массиве [1172761]seen[1172762], ключом которого является текущая строка ([1172763]$0[1172764]). Поэтому [1172765]!seen[$0]++[1172766] будет ложной, если эта строка уже была видна. [1172767]/./[1172768] проверяет, не содержит ли строка непустых символов, поэтому [1172769]!/./[1172770] совпадает с непустыми строками. В сочетании с [1172771]|| !seen[$0]++[1172772] проигнорирует все дубликаты строк, кроме пустых, и выведет остальные.[1172398].

    11
    27.01.2020, 19:52
    [1173059] Вот еще одно решение [1173435]awk[1173436], похожее на ответ @Thor, менее краткое, но более эффективное:

    С его помощью мы только проверяем [1173437]a[$0][1173438], существовало оно или нет. Если нет, то инициализируем его, а затем печатаем. В этом случае у нас нет никакой ссылки, присваивания к [1173439]a[$0][1173440], если он существовал.[1173062].

    5
    27.01.2020, 19:52

    Логический оператор НЕТ выходить за скобки:

    awk '!(NF && seen[$0]++)'
    
    2
    15.10.2021, 08:09
    awk '/^$/ || !seen[$0]++' filename
    
    0
    15.10.2021, 13:20

    Теги

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