一般我们常常合并文件在文本后追加行(windows和linux都可以使用copy命令来采用追加的方式合并文本),Paste命令我们一般使用的比较少,它可以按照列来追加文本即按列合并。

今天合并几个htseq-count的结果,一个文件一列,手动处理或是写代码太麻烦,于是就用 Paste 很简单的解决了这个问题(用join也可以,比如需要首行相同按列合并,用法类似)。

Usage: paste [OPTION]... [FILE]...
Write lines consisting of the sequentially corresponding lines from
each FILE, separated by TABs, to standard output.

With no FILE, or when FILE is -, read standard input.

Mandatory arguments to long options are mandatory for short options too.
  -d, --delimiters=LIST   reuse characters from LIST instead of TABs
  -s, --serial            paste one file at a time instead of in parallel
  -z, --zero-terminated    line delimiter is NUL, not newline
      --help     display this help and exit
      --version  output version information and exit

案例:

# 文件1:file1.txt
列1
列2
列3
列4

# 文件2:file2.txt
属性1
属性2
属性3
属性4

假设我们需要按列合并file1.txt和file2.txt(默认合并采用空格作为分隔符)

paste file1.txt file2.txt
# 输出结果
列1     属性1
列2     属性2
列3     属性3
列4     属性4

指定特定的分隔符(注意:如果是windows下文件需要先用dos2unix进行转换)

paste -d '@' file1.txt file2.txt
# 输出结果
列1@属性1
列2@属性2
列3@属性3
列4@属性4

更多妙用读者可以动手测试学习(如:-s-z参数)。

参考资料:

1.https://linuxize.com/post/paste-command-in-linux/