Как удалить блоки повторяющихся строк с помощью uniq?

Mutt теперь официально поддерживает OAuth , специально предназначенный для проблем с Gmail.

2
08.05.2020, 06:42
2 ответа
$ awk '!a[$0]++' file
calling config()
running main loop
  time=0
output from Rank 0
5
28.04.2021, 23:15

Со страницы руководства uniq:

Note: 'uniq' does not detect repeated lines unless they are adjacent.

Но вы можете сделать это с помощью вот такого короткого bash-скрипта:

#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n'

declare -r file=${1:?Please enter a filename to treat as first parameter}

linenum=0
for line in $(cat "${file}"); do
  linenum="$((linenum + 1))"
  freq=$(sed -n "1,${linenum} p" "${file}" | grep -c "${line}")
  [[ ${freq} == 1 ]] && echo "${line}"
done

Что даст в вашем случае:

calling config()
running main loop
  time=0
output from Rank 0
3
28.04.2021, 23:15

Теги

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