使用this file,我想打印一個 包的依賴關係樹,給定一個基本包。例如,拿 bash包打印程序包依賴關係樹
@ bash
# few lines removed
requires: coreutils libintl8 libncursesw10 libreadline7 _update-info-dir cygwin
我想所需 包find-like輸出部分例如
bash
bash coreutils
bash coreutils libattr1
bash coreutils libattr1 libintl8
bash coreutils libattr1 libintl8 libiconv2
bash coreutils libattr1 libintl8 _autorebase
bash coreutils libattr1 libintl8 _autorebase rebase
bash coreutils libattr1 libintl8 _autorebase rebase dash
bash coreutils libattr1 libintl8 _autorebase rebase dash cygwin
bash coreutils libattr1 libintl8 _autorebase rebase dash cygwin base-cygwin
我有這樣的命令,但它不會遞歸
#!awk -f
$1 == "@" {
pkg = $2
}
$1 == "requires:" {
for (i=2; i<=NF; i++)
reqs[pkg][i-1] = $i
}
END {
query = "bash"
for (pkg in reqs[query]) {
print reqs[query][pkg]
}
}
我將開始與BEGIN {RS = 「@」; FS = 「\ n」}和比較$ i到 「要求:」 凡$ a1將是使用的名稱在你的關聯數組和某個字段中(使用for循環或其他)將以require - 使用substr在「:」之前移除並將其作爲值存儲....然後在END中,將使用關聯數組遞歸地打印值 - 但要注意循環依賴關係 – technosaurus