在模拟文件的命令行上进行管道传输?

发布于 2024-11-05 03:18:23 字数 231 浏览 4 评论 0原文

我以前见过这种技术,但不知道它叫什么,也忘记了确切的语法。假设我需要将一个文件通过管道输入到一个程序中,例如:command <输入文件。但是,我想直接将输入文件的这些行传递到命令中,而不需要中间输入文件。它看起来像这样,但它不起作用:

command < $(file-line1; file-line2; file-line3)

有人能告诉我这叫什么以及如何做吗?

I've seen the technique before, but don't know what it's called and forget the exact syntax. Let's say I need to pipe in a file to a program like: command < input-file. However, I want to directly pass these lines of the input file into the command without the intermediate input file. It looks something like this, but it doesn't work:

command < $(file-line1; file-line2; file-line3)

Can someone tell me what this is called and how to do it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

各空 2024-11-12 03:18:23

这称为进程替换

command < <(printf "%s\n" "file-line1" "file-line2" "file-line3")

有了上面的内容,command 就会认为它正在输入一个名称很像 /dev/fd/XX 的文件,其中“XX”是一些数字。正如您所提到的,这是一个临时文件(实际上是一个文件描述符),但它将包含您传递给 printf 命令的 3 行。

This is called Process Substitution

command < <(printf "%s\n" "file-line1" "file-line2" "file-line3")

With the above, command will think its being input a file with a name much like /dev/fd/XX where 'XX' is some number. As you mentioned, this is a temporary file (actually a file descriptor) but it will contain the 3 lines you passed in to the printf command.

夜雨飘雪 2024-11-12 03:18:23

这里的字符串。

command <<< 

或者heredoc。

command << EOF
line 1
line 2
line 3
EOF
line 1\nline 2\nline 3\n'

或者heredoc。

Herestring.

command <<< 

Or heredoc.

command << EOF
line 1
line 2
line 3
EOF
line 1\nline 2\nline 3\n'

Or heredoc.

楠木可依 2024-11-12 03:18:23

我认为您指的是“此处文档”。像这样

#!/bin/sh
cat <<EOF
This is
the 
lines.
EOF

I think you are referring to a "here document". Like this

#!/bin/sh
cat <<EOF
This is
the 
lines.
EOF
清醇 2024-11-12 03:18:23

怎么样:

cat myfile.txt | head -n3 | command

How about:

cat myfile.txt | head -n3 | command
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文