如何将已安装的软件包列表整理成 "one-liner" 以便稍后重新安装(仅使用 grep / cut / sed / awk 等,没有外部工具)

how to colate a list of installed packages into a "one-liner" for re-installing later (using only grep / cut / sed / awk etc, no external tools)

命令: apt list --installed

输出:

aapt/stable,now 7.1.2.33-7 aarch64 [installed]
abduco/stable,now 0.6-2 aarch64 [installed]
ack-grep/stable,now 3.3.1 all [installed]
antibody/stable,now 6.0.1 aarch64 [installed]
apt/stable,now 1.4.9-27 aarch64 [installed]

我要:

aapt abduco ack-grep antibody apt

因此我需要:

只显示第一个字段中的第一个 /,但显示在一行中,而不是多行。

背景资料:

然后可以在该列表中附加 sudo apt install,以便在我擦除系统后快速创建一个单行程序,以便稍后重新安装我的软件包。

这可能对您有帮助:
apt list --installed | awk -F'/' '{print }' | tr '\n' ' '

apt list --installed 列出包。
awk -F'/' '{print }' 使用 / 作为分隔符取第一列。
tr '\n' ' ' 将跳转行替换为空格。

使用

$ apt list --installed | awk -F/ '{s=" "s} END{print s}' 
apt antibody ack-grep abduco apt antibody ack-grep abduco aapt

cuttr:

apt list --installed | cut -f1 -d / | tr "\n" " "

使用 sed:

apt list --installed | sed -E ':a;N;$!ba;s/\n/ /g;s/\/[^]]+\]//g'

我认为第一个更易读,更容易理解。