Shell 如何在输出中获得不同的行?

Shell 如何在输出中获得不同的行?,shell,Shell,在我的终端: ps aux|awk '{print $1}' USER root root root root statd root root root 101 daemon avahi avahi 103 rtkit debian debian debian 我想得到的输出是 用户 根 状态 101 守护进程 阿瓦希 103 rtkit 德比安 如何编写shell?使用下面的代码,而不是awk'{print$1}' awk '{a[$1];next}END{for(i in a )prin

在我的终端:

ps  aux|awk '{print $1}'
USER
root
root
root
root
statd
root
root
root
101
daemon
avahi
avahi
103
rtkit
debian
debian
debian
我想得到的输出是
用户

状态
101
守护进程
阿瓦希
103
rtkit
德比安


如何编写shell?

使用下面的代码,而不是
awk'{print$1}'

awk '{a[$1];next}END{for(i in a )print i}'

您可以通过sort和uniq传递命令输出

ps  aux|awk '{print $1}' | sort | uniq
如果您需要按特定顺序排列列表,则会变得更为复杂。

一种方式:

ps  aux | awk '!a[$1]++{print $1}'

您可以使用
sort-u
,而不是在之后通过
uniq
运行输出。