поиск уникальных значений в файле данных - PullRequest
16 голосов
/ 05 августа 2011

Я могу сделать это в Python, но мне было интересно, смогу ли я сделать это в Linux

У меня есть такой файл

name1 text text 123432re text
name2 text text 12344qp text
name3 text text 134234ts text

Я хочу найти все различные типы значений в 3-м столбце по определенному имени пользователя, скажем, имя 1.

grep name1 filename дает мне все строки, но должен быть какой-то способ просто перечислить все различные типы значений? (Я не хочу отображать повторяющиеся значения для одного и того же имени пользователя)

Ответы [ 5 ]

37 голосов
/ 05 августа 2011
grep name1 filename | cut -d ' ' -f 4 | sort -u

Эта команда найдет все строки с именем1, затем получит только четвертый столбец данных и покажет только уникальные значения.

8 голосов
/ 05 августа 2011

Вы можете разрешить сортировку выглядеть только по 4-му ключу, а затем запрашивать только записи с уникальными ключами:

grep name1 | sort -k4 -u
6 голосов
/ 19 августа 2016

Я пытался использовать cat

Файл содержит: (здесь файл foo.sh, здесь вы можете ввести любое имя файла)

$cat foo.sh

tar
world
class
zip
zip
zip
python
jin
jin
doo
doo

uniq получит каждое слово только один раз

$ cat foo.sh | sort | uniq

class
doo
jin
python
tar
world
zip

uniq -u получит слово, появившееся только один раз в файле

$ cat foo.sh | sort | uniq -u

class
python
tar
world

uniq -d получит только повторяющиеся слова и напечатает их только один раз

$ cat foo.sh | sort | uniq -d

doo
jin
zip
1 голос
/ 05 августа 2011

Как универсальное решение для awk:

awk '$1 == "name1" && ! seen[$1" "$4]++ {print $4}' filename
0 голосов
/ 05 мая 2017

На мой взгляд, вам нужно выбрать поле, из которого вам нужны уникальные значения.Я пытался получить уникальные исходные IP-адреса из журнала IPTables.

cat /var/log/iptables.log | grep "May  5" | awk '{print $11}' | sort -u

Вот вывод приведенной выше команды:

SRC=192.168.10.225

SRC=192.168.10.29

SRC=192.168.20.125

SRC=192.168.20.147

SRC=192.168.20.155

SRC=192.168.20.183

SRC=192.168.20.194

Итак, лучше всего сначала выбрать полеа затем отфильтруйте уникальные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...