我有一个存储有向图的文件。每条线表示为
node1 TAB node2 TAB 权重
我想找到一组节点。有没有更好的工会方式?我当前的解决方案涉及创建临时文件:
cut -f1 input_graph | sort | uniq > nodes1
cut -f2 input_graph | sort | uniq > nodes2
cat nodes1 nodes2 | sort | uniq > nodes
{ cut -f1 input_graph; cut -f2 input_graph; } | sort | uniq
无需排序两次。
{ cmd1; cmd2; } 语法等价于 (cmd1; cmd2) 但可以避免使用子shell。
在另一种语言(例如 Perl)中,您可以在散列中读取第一列,然后按顺序处理第二列。
仅使用 Bash,您可以使用语法避免临时文件cat <(cmd1) <(cmd2)
。Bash 负责创建临时文件描述符和设置管道。
在脚本中(您可能希望避免使用 bash),如果您最终需要临时文件,请使用mktemp