Подтвердить что ты не робот

Поиск уникальных значений в файле данных

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

У меня есть файл вроде этого

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

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

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

4b9b3361

Ответ 1

grep name1 filename | cut -d ' ' -f 4 | sort -u

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

Ответ 2

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

grep name1 | sort -k4 -u

Ответ 3

Я пытался использовать 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

Ответ 4

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

awk '$1 == "name1" && ! seen[$1" "$4]++ {print $4}' filename

Ответ 5

На мой взгляд, вам нужно выбрать поле, из которого вам нужны уникальные значения. Я пытался извлечь уникальные исходные 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

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