一般我们常常合并文件在文本后追加行(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/