Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux tsv文件中两列的并集_Linux_Graph_Cut_Tsv - Fatal编程技术网

Linux tsv文件中两列的并集

Linux tsv文件中两列的并集,linux,graph,cut,tsv,Linux,Graph,Cut,Tsv,我有一个存储有向图的文件。每行表示为 节点1选项卡节点2选项卡权重 我想找到节点集。有没有更好的方法来建立联盟?我当前的解决方案包括创建临时文件: cut -f1 input_graph | sort | uniq > nodes1 cut -f2 input_graph | sort | uniq > nodes2 cat nodes1 nodes2 | sort | uniq > nodes 不需要排序两次 {cmd1;cmd2;}语法等同于(cmd1;cmd2),但可以

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

节点1选项卡节点2选项卡权重

我想找到节点集。有没有更好的方法来建立联盟?我当前的解决方案包括创建临时文件:

cut -f1 input_graph | sort | uniq > nodes1
cut -f2 input_graph | sort | uniq > nodes2
cat nodes1 nodes2 | sort | uniq > nodes
不需要排序两次

{cmd1;cmd2;}语法等同于(cmd1;cmd2),但可以避免使用子shell

在另一种语言(例如Perl)中,可以在散列中对第一列进行slurp,然后按顺序处理第二列


使用Bash only,您可以通过使用语法
cat避免临时文件。您可以详细说明
mktemp
?这是一个边缘点,为您未来的脚本习惯提供参考(这就是我上次提到它的原因)。例如,在原始代码中,可以使用
mktemp
生成临时文件名(而不是硬编码文件名“nodes1”和“nodes2”):
nodes1=$(mktemp);cut-f1输入图|排序| uniq>“$NODES1”
。但当然,实际上并不需要任何类型的临时文件,不管是否有硬编码名称:)
{ cut -f1 input_graph; cut -f2 input_graph; } | sort | uniq