使用AWK语言从包含功能ID的TXT文件构造功能调用图



我有一个带有两个列的txt文件,在每列中,我都有函数ID,指示第一个函数调用第二个函数,如下:

1,4

12,5

4,8

8,1

5,23

现在,我将使用awk命令查找我的功能调用流。例如,根据文件的上述内容,我想提取1,4,8和12,5,23

的流量

对于每个流程,我将继续添加功能ID,直到到达圆或到达文件结束为止。我的文件非常大,我不想使用python。

您需要一个递归的程序,例如:

$ cat recurse.awk
BEGIN { FS=OFS="," }
{
    roots[NR] = $1
    map[$1] = $2
}
END {
    for (rootNr=1; rootNr<=NR; rootNr++) {
        root = roots[rootNr]
        if ( !(seen[root]++) ) {
            tree = root
            descend(root)
            print tree
        }
    }
}
function descend(root,  branch) {
    if (root in map) {
        branch = map[root]
        if ( !(seen[branch]++) ) {
            tree = tree OFS branch
            descend(branch)
        }
    }
}
$ awk -f recurse.awk file
1,4,8
12,5,23

最新更新