我用来dnf list installed
列出所有已安装的软件包,它返回以下输出:
zenity.x86_64 3.22.0-1.fc25 @@commandline
zip.x86_64 3.0-16.fc24 @@commandline
zlib.i686 1.2.8-10.fc24 @@commandline
zlib.x86_64 1.2.8-10.fc24 @@commandline
zlib-devel.x86_64 1.2.8-10.fc24 @@commandline
znc.x86_64 1.6.5-1.fc25 @@commandline
我只对包的名称感兴趣,即第一列的值,但仅直到.
(例如znc.x86_64
-> znc
)。
如何将此命令输出的结果合并到以空格分隔的单行中(例如zip zlib zlib-devel znc
)?
答案1
awk+种类解决方案:
dnf list installed | awk -F. -v ORS="\0" '{print $1" "}' | sort -zu && echo ""
输出应如下所示:
zenity zip zlib zlib-devel znc
-v ORS="\0"
- 将输入视为零终止记录
sort -zu
- 要得到独特的零终止值