tsv文件的两列联合

时间:2013-09-26 05:45:27

标签: linux graph cut tsv

我有一个存储有向图的文件。每一行都表示为

node1 TAB node2 TAB权重

我想找到一组节点。有没有更好的联盟方式?我目前的解决方案涉及创建临时文件:

cut -f1 input_graph | sort | uniq > nodes1
cut -f2 input_graph | sort | uniq > nodes2
cat nodes1 nodes2 | sort | uniq > nodes

1 个答案:

答案 0 :(得分:2)

{ cut -f1 input_graph; cut -f2 input_graph; } | sort | uniq

无需排序两次。

{cmd1; CMD2;语法等同于(cmd1; cmd2),但可以避免子shell。

在另一种语言(例如Perl)中,您可以在散列中粘贴第一列,然后按顺序处理第二列。

仅使用Bash,您可以使用语法cat <(cmd1) <(cmd2)来避免临时文件。 Bash负责创建临时文件描述符和设置管道。

在脚本中(您可能希望避免使用bash),如果您最终需要临时文件,请使用mktemp