Ответ 1
grep name1 filename | cut -d ' ' -f 4 | sort -u
Здесь будут найдены все строки с именем1, а затем получить только четвертый столбец данных и показать только уникальные значения.
Я могу сделать это в python, но мне было интересно, могу ли я сделать это в Linux
У меня есть файл вроде этого
name1 text text 123432re text
name2 text text 12344qp text
name3 text text 134234ts text
Я хочу найти все разные типы значений в третьем столбце конкретным именем пользователя, скажем, имя 1.
grep name1 filename дает мне все строки, но должен быть какой-то способ просто перечислить все разные типы значений? (Я не хочу отображать повторяющиеся значения для одного и того же имени пользователя)
grep name1 filename | cut -d ' ' -f 4 | sort -u
Здесь будут найдены все строки с именем1, а затем получить только четвертый столбец данных и показать только уникальные значения.
Вы можете разрешить сортировку только на 4-м ключе, а затем запросить только записи с уникальными ключами:
grep name1 | sort -k4 -u
Я пытался использовать 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
Как универсальное awk-решение:
awk '$1 == "name1" && ! seen[$1" "$4]++ {print $4}' filename
На мой взгляд, вам нужно выбрать поле, из которого вам нужны уникальные значения. Я пытался извлечь уникальные исходные 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
Итак, лучшая идея - сначала выбрать поле, а затем отфильтровать уникальные данные.