连接linux程序输出,并仅返回重复的输出

连接linux程序输出,并仅返回重复的输出,linux,unix,command-line,Linux,Unix,Command Line,我有多个程序,每个程序都产生输出行。如何连接这些输出,然后只返回至少重复一次的每行的一个副本?换句话说,我想返回所有响应行的名称 例如: $ progA 9 13 14 15 $ progA --someFlag 13 14 15 100 $ progB 14 15 -42 $ magicFunction 'progA' 'progA --someFlag' 'progB' 14 15 这不一定是一个函数本身。我只是想要一种unix命令行方式。怎么样: ( progA; progA --som

我有多个程序,每个程序都产生输出行。如何连接这些输出,然后只返回至少重复一次的每行的一个副本?换句话说,我想返回所有响应行的名称

例如:

$ progA
9
13
14
15
$ progA --someFlag
13
14
15
100
$ progB
14
15
-42
$ magicFunction 'progA' 'progA --someFlag' 'progB'
14
15
这不一定是一个函数本身。我只是想要一种unix命令行方式。

怎么样:

( progA; progA --someFlag; progB ) | sort | uniq -d
uniq
-d
选项强制它只输出具有多个副本的行

下面是上面一个不使用子外壳的衬里的变体:

{ progA; progA --someFlag; progB; } | sort | uniq -d
这至少在
bash
中有效。请注意大括号中最后一个命令后所需的终止分号(
)。

如何:

( progA; progA --someFlag; progB ) | sort | uniq -d
uniq
-d
选项强制它只输出具有多个副本的行

下面是上面一个不使用子外壳的衬里的变体:

{ progA; progA --someFlag; progB; } | sort | uniq -d

这至少在
bash
中有效。请注意大括号中最后一个命令后所需的终止分号(
)。

上述解决方案实际上并没有计算所有3个输出的集合交点
uniq-d
还将输出仅由3个程序中的2个程序输出的行。 以下是我对它的看法:


progA | sort>f1;progA--someFlag | sort>f2;progB | sort>f3;通信-1-2 f1 f2 |通信-1-2 f3-;rm f[123]

上述解决方案实际上并没有计算所有3个输出的集合交点
uniq-d
还将输出仅由3个程序中的2个程序输出的行。 以下是我对它的看法:


progA | sort>f1;progA--someFlag | sort>f2;progB | sort>f3;通信-1-2 f1 f2 |通信-1-2 f3-;rm f[123]

宾果!!谢谢我很高兴我只是这么问,而不是试图自己去弄清楚:)宾果!!谢谢我很高兴我只是这么问,而不是试图自己去弄清楚:)