如何将已安装的软件包列表整理成 "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' ' '
将跳转行替换为空格。
使用awk
$ apt list --installed | awk -F/ '{s=" "s} END{print s}'
apt antibody ack-grep abduco apt antibody ack-grep abduco aapt
与 cut
和 tr
:
apt list --installed | cut -f1 -d / | tr "\n" " "
使用 sed:
apt list --installed | sed -E ':a;N;$!ba;s/\n/ /g;s/\/[^]]+\]//g'
我认为第一个更易读,更容易理解。
命令:
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' ' '
将跳转行替换为空格。
使用awk
$ apt list --installed | awk -F/ '{s=" "s} END{print s}'
apt antibody ack-grep abduco apt antibody ack-grep abduco aapt
与 cut
和 tr
:
apt list --installed | cut -f1 -d / | tr "\n" " "
使用 sed:
apt list --installed | sed -E ':a;N;$!ba;s/\n/ /g;s/\/[^]]+\]//g'
我认为第一个更易读,更容易理解。