Выберите уникальные или отличные значения из списка в сценарии оболочки UNIX

Даты MongoDB работают совместно с java.util.Date. Измените свой запрос на что-то вроде этого:

Date start = new java.util.Date(2012, 06, 20, 10, 05);
Date end = new java.util.Date(2012, 06, 20, 10, 30);

BasicDBObject query = new BasicDBObject("Date", 
    new BasicDBObject("$gt", start)).
            append("$lte", end) ));
222
задан brabster 6 March 2009 в 10:33
поделиться

5 ответов

Вы могли бы хотеть посмотреть uniq и sort приложения.

./yourscript.ksh | sort | uniq

(к вашему сведению, да, вид необходим в этой командной строке, uniq только, полосы копируют строки, которые сразу являются друг после друга)

РЕДАКТИРОВАНИЕ:

Вопреки тому, что было отправлено [1 112] Aaron Digulla относительно uniq параметры командной строки:

, Учитывая следующий вход:

class
jar
jar
jar
bin
bin
java

uniq произведет все строки точно однажды:

class
jar
bin
java

uniq -d произведет все строки, которые появляются несколько раз, и это распечатает их однажды:

jar
bin

uniq -u произведет все строки, которые появляются точно однажды, и это распечатает их однажды:

class
java
401
ответ дан Community 4 November 2019 в 13:36
поделиться
./script.sh | sort -u

Это совпадает с монооксид ответ , но немного более краткий.

82
ответ дан Community 4 November 2019 в 13:36
поделиться

Передайте их по каналу до sort и uniq. Это удаляет все дубликаты.

uniq -d дает только дубликаты, uniq -u дает только уникальные (дубликаты полос).

9
ответ дан Aaron Digulla 4 November 2019 в 13:36
поделиться

Для больших наборов данных, где сортировка не может быть желательной, можно также использовать следующий сценарий жемчуга:

./yourscript.ksh | perl -ne 'if (!defined $x{$_}) { print $_; $x{$_} = 1; }'

Это в основном просто помнит каждый вывод строки так, чтобы он не производил его снова.

Это имеет преимущество перед"sort | uniq"решение, в котором нет никакой сортировки, требуемой впереди.

10
ответ дан paxdiablo 23 November 2019 в 03:56
поделиться

С zsh можно сделать это:

% cat infile 
tar
more than one word
gz
java
gz
java
tar
class
class
zsh-5.0.0[t]% print -l "${(fu)$(<infile)}"
tar
more than one word
gz
java
class

Или можно использовать AWK:

% awk '!_[$0]++' infile    
tar
more than one word
gz
java
class
10
ответ дан iain 23 November 2019 в 03:56
поделиться
Другие вопросы по тегам:

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