粘贴:将子外壳的输出粘贴到管道的传入内容
Paste: paste output from subshell to incoming content from pipeline
假设我执行以下执行的命令:
seq 1 100 > x
cat y_data | paste x /dev/stdin
现在,我想执行以下操作:
cat y_data | paste $(seq 1 100) /dev/stdin
但是,我处于猜测和检查模式,具有各种重定向排列。有没有办法为粘贴执行此子外壳重定向?
paste
接受文件名。您需要一些可以被视为文件名的东西,并且在读取时会产生 seq 1 100
的输出。
创建真实文件是一种方法。另一个是进程替换:
cat y_data | paste <(seq 1 100) /dev/stdin | less
您也可以使用多个命令执行此操作:
paste <(seq 1 100) <(tail -n 100 y_data) | less
每个 <(...)
将被文件名替换为 Bash 设置的管道,打开此文件名进行读取将读取命令的输出:
$ echo <(seq 1 3)
/dev/fd/63
$ cat <(seq 1 3)
1
2
3
您可以类似地使用 >(...)
创建一个可以写入的文件名,将数据通过管道传输到命令的标准输入。
假设我执行以下执行的命令:
seq 1 100 > x
cat y_data | paste x /dev/stdin
现在,我想执行以下操作:
cat y_data | paste $(seq 1 100) /dev/stdin
但是,我处于猜测和检查模式,具有各种重定向排列。有没有办法为粘贴执行此子外壳重定向?
paste
接受文件名。您需要一些可以被视为文件名的东西,并且在读取时会产生 seq 1 100
的输出。
创建真实文件是一种方法。另一个是进程替换:
cat y_data | paste <(seq 1 100) /dev/stdin | less
您也可以使用多个命令执行此操作:
paste <(seq 1 100) <(tail -n 100 y_data) | less
每个 <(...)
将被文件名替换为 Bash 设置的管道,打开此文件名进行读取将读取命令的输出:
$ echo <(seq 1 3)
/dev/fd/63
$ cat <(seq 1 3)
1
2
3
您可以类似地使用 >(...)
创建一个可以写入的文件名,将数据通过管道传输到命令的标准输入。