假设我有这两个命令:
$ cat file1
file1_a
file1_b
file1_c
file1_d
和:
$ cat file2
file2_a
file2_b
file2_c
file2_d
如何使用自定义分隔符(例如...
)组合这些输出,以便获得以下输出:
$ # some fancy command like { cat file1 & cat file2 } | combine --separator='...'
file1_a...file2_a
file1_b...file2_b
file1_c...file2_c
file1_d...file2_d
?
答案1
我喜欢使用paste
命令。
paste -d. file1 - - file2 < /dev/null
产生所需的输出
file1_a...file2_a
file1_b...file2_b
file1_c...file2_c
file1_d...file2_d
-
指的是标准输入,我们使用它两次来使我们</dev/null
使用的点增加三倍,因为我们不希望这些点之间有任何东西。
答案2
如果您有paste
两个文件,它们将由制表符分隔。因此,只需将制表符替换为您想要的分隔符即可:
$ paste file1 file2 | sed -e 's/\t/.../'
如果您的内容有制表符,则发明一个新的分隔符,该分隔符不会像 % 那样出现:
$ paste -d% file1 file2 | sed -e s/%/.../
答案3
这是@zacharybrady 的答案,但更像你所要求的。它就输入过程而言。我想你会延长。
paste -d. <(cat file1) - - <(cat file2) < /dev/null
感谢@zacharybrady 让我坚持了下来。我已经忘记了这join <(cat -n file1) <(cat -n file2) | cut -d" " -f2-
一点paste
。但我无法获得正确的字段分隔符。
注意:我发现它paste
不符合 utf-8 标准。它只处理 后的第一个字节-d
,因此-d…
被破坏。 (我使用的是debian jessie,粘贴(GNU coreutils)8.23)