在 Bash/Shell 中使用“粘贴”和“- - -”

Tom*_* M. 3 bash paste

我遇到了几行用于重新格式化文本文件的代码,如下所示

paste - - - - < file.fq | cut -f 1,2 | ...
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚- - -粘贴命令的作用。破折号的数量有何影响?

che*_*ner 6

每个-都是输入文件的“名称”,表示应使用标准输入。也就是说,它产生四列输出,每列依次读取一行输入。比较 4 个破折号

$ printf 'a\nb\nc\nd\n' | paste - - - -
a   b   c   d
Run Code Online (Sandbox Code Playgroud)

具有相同的输入,但只有 2 个破折号:

$ printf 'a\nb\nc\nd\n' | paste - -
a   b
c   d
Run Code Online (Sandbox Code Playgroud)

请注意,shell 本身不涉及如何-处理;它将pastea 解释-为标准输入(尽管它是 POSIX 标准认可的约定)。