Вы можете привязать клавишу для переключения nicklist и буферного списка, освобождая большую часть реального -пространства экрана,например:
ctrl-F = "/bar toggle nicklist; /bar toggle buflist"
С помощью awk
. Сопоставьте имена ключей в массиве unique
, и к тому времени, когда вся обработка файла будет завершена, в массиве должен быть только один ключ.
awk '!unique[$0]++ { count++ } END { print count == 1 ? "contents are same" : "contents are different" }' file
Общий синтаксис для awk
представляет собой шаблонную -модель действия.
pattern { action }
Часть !unique[$0]++
создает хэш-карту (ассоциативного массива )путем создания ключа как содержимого всей строки $0
. При первом просмотре уникальной строки значение unique['<key-name>']
будет равно нулю, а блок !
отменяет это ложное и становится истинным действием для части {..}
, где мы увеличиваем счетчик.
Поскольку мы также увеличиваем значение после -, для последующих вхождений той же строки отрицание создаст логическое ложное условие, в результате чего блок {..}
не будет выполняться. Инструкции внутри END
выполняются после обработки всех строк. Поскольку в конце обработки у нас есть только один ключ в массиве, мы объявляем строки одинаковыми.
Использованиеuniq
:
uniq -c testfile | [ $(wc -l) -eq 1 ] && echo 'contents are the same' || echo 'contents are different'
Пробовал с решением ниже awk, все работало нормально
команда
i=`awk '{if (!seen[$0]++){print $0}}' filename| wc -l`
if [[ $i == 1 ]]; then echo "contents are same"; else echo "contents are different"; fi
Все, что вам нужно для краткого, портативного и эффективного сравнения, это:
awk '!seen[$0]++ && NR>1{exit 1}'
Например и с добавленными выходными сообщениями:
$ cat file1
example-line
example-line
example-line
$ cat file2
example-line
somethingelse
example-line
$ awk '!seen[$0]++ && NR>1{f=1; exit} END{print "contents are " (f ? "different" : "same"); exit f}' file1
contents are same
$ echo $?
0
$ awk '!seen[$0]++ && NR>1{f=1; exit} END{print "contents are " (f ? "different" : "same"); exit f}' file2
contents are different
$ echo $?
1