gnuplot和bash进程替换

tom*_*sen 5 bash gnuplot process

gnuplot是否允许bash进程替换?

在gnuplot我可以这样做:

plot "<join tmp1 tmp2" u 2:3
Run Code Online (Sandbox Code Playgroud)

但我不能让这个工作:

plot "<join tmp1 <(join tmp2 tmp3)" u 2:3
Run Code Online (Sandbox Code Playgroud)

它应该工作,还是gnuplot不支持bash进程替换?

以下是3个示例输入文件:

猫tmp1

A 1
B 2
C 3
Run Code Online (Sandbox Code Playgroud)

猫tmp2

B 3
C
D 6
Run Code Online (Sandbox Code Playgroud)

猫tmp3

A 4
B 6
C 8
D 10
E 12
Run Code Online (Sandbox Code Playgroud)

Chr*_*oph 5

以下的命令<被执行用popen(),它使用/bin/sh(见man popen).所以你必须bash明确地调用才能使用进程替换:

plot '< exec bash -c "join tmp1 <(join tmp2 tmp3)"' using 2:3
Run Code Online (Sandbox Code Playgroud)

在您使用单一替换的情况下,以下内容也可以:

plot '< join tmp2 tmp3 | join tmp1 -' using 2:3
Run Code Online (Sandbox Code Playgroud)