在数据文件中查找唯一值

Ill*_*ist 17 linux bash shell

我可以在python中做到这一点,但我想知道我是否可以在Linux中执行此操作

我有这样的文件

name1 text text 123432re text
name2 text text 12344qp text
name3 text text 134234ts text
Run Code Online (Sandbox Code Playgroud)

我希望通过特定的用户名在第3列中找到所有不同类型的值,例如名称1.

grep name1 filename给了我所有的行,但必须有一些方法来列出所有不同类型的值?(我不想为同一用户名显示重复值)

Mik*_*ock 39

grep name1 filename | cut -d ' ' -f 4 | sort -u
Run Code Online (Sandbox Code Playgroud)

这将找到所有具有name1的行,然后只获取第四列数据并仅显示唯一值.


Mic*_*jer 8

您可以只对第4个键进行排序,然后仅询问具有唯一键的记录:

grep name1 | sort -k4 -u
Run Code Online (Sandbox Code Playgroud)


Roh*_*ude 8

我试过用 cat

文件包含:(这里的文​​件是foo.sh,你可以在这里输入任何文件名)

$cat foo.sh

tar
world
class
zip
zip
zip
python
jin
jin
doo
doo
Run Code Online (Sandbox Code Playgroud)

uniq 只会得到一个单词

$ cat foo.sh | sort | uniq

class
doo
jin
python
tar
world
zip
Run Code Online (Sandbox Code Playgroud)

uniq -u 将该单词出现在文件中只有一次

$ cat foo.sh | sort | uniq -u

class
python
tar
world
Run Code Online (Sandbox Code Playgroud)

uniq -d 将获得唯一的重复单词并打印一次

$ cat foo.sh | sort | uniq -d

doo
jin
zip
Run Code Online (Sandbox Code Playgroud)