Я запускаю облачный сервис для своей семьи и сделал этот быстрый скрипт, который я запускаю в cron
каждое утро в 5, потому что я дешёвый и не куплю статический IP.
Он захватывает публичный IP и отправляет его по электронной почте моим пользователям. Сделал его электронным письмом в формате гиперссылки, чтобы моей маме не приходилось набирать порты или что-то еще. Может быть, кто-нибудь другой сможет использовать его.
#!/bin/bash
ipvariable=$(wget http://ipecho.net/plain -O - -q);
echo "Today the location is http://$ipvariable:123456/foldertheyreach" | mail -s "From your friendly cloud service provider" user1@someemail.com, user2@ect.com
Uniq не сортирует и не снимает остальную часть строки. uniq -d
показывает только дублированные строки, что не то же самое, что показывать каждую строку один раз (т.е. с -d
она должна быть там дважды, и последовательно показываться)
Сначала вырезаются неинтересные столбцы, затем сортируются, а затем находят уникальные элементы:
cut -d ' ' -f 1 your_file | sort | uniq
uniq -d
перечисляет только дублированные строки из своего входа; так как ваш файл не содержит дубликатов строк (рассматривается во всей их полноте), он ничего не выводит.
Чтобы получить нужный результат, необходимо извлечь первый столбец и отфильтровать его:
cut -d\ -f1 file | uniq
в предположении, что ваш файл отсортирован (uniq
только фильтрует дублирующие друг друга соседние строки); в противном случае
cut -d\ -f1 file | sort -u
Или вы можете сделать это с помощью awk
, как указано в taliezin, с небольшим вариантом, чтобы вывести только первый столбец:
awk '!x[$1]++ { print $1 }' file