这里的cat不是猫的意思,而是英文catenate(连接)的缩写,它可以用来把几个文件连接起来。除此之外,我们还经常用cat来显示小文件的内容(内容不超过一屏),为什么大文件(超过一屏)不用呢?因为cat不会逐屏显示,而是一次性的把所有内容输出到标准输出(屏幕),所以如果文件超过一屏,你只能看到文件最后的部分。当然cat还有一些其他的用法。
一次性显示文件内容、连接文件
cat [option] [file(s)]
-n 显示行号。
cat主要有四种用法:
1. 显示小文件内容。
[peter@ibi98 ~]$ ls /home/pub/seq/ at_LEC1_CDS.fa at_protein.fa.gz cr_HAP3_CDS.fa TAIR9_cds_20090619 TAIR9_pep_20090619.gz [peter@ibi98 ~]$ cat /home/pub/seq/at_LEC1_CDS.fa >AT1G21970 At_NM_102046 gi|42562231:47-763 Arabidopsis thaliana LEC1 (LEAFY COTYLEDON 1); transcription factor AT1G21970 (LEC1) mRNA, complete cds ATGGAACGTGGAGCTCCCTTCTCTCACTATCAGCTACCAAAATCCATCTCTGAATTGAACTTGGACCAGC ACAGCAACAACCCAACCCCAATGACCAGCTCAGTCGTAGTAGCCGGCGCCGGTGACAAGAACAATGGTAT CGTGGTCCAGCAGCAACCACCATGTGTGGCTCGTGAGCAAGACCAATACATGCCAATCGCAAACGTCATA AGAATCATGCGTAAAACCTTACCGTCTCACGCCAAAATCTCTGACGACGCCAAAGAAACGATTCAAGAAT GTGTCTCCGAGTACATCAGCTTCGTGACCGGTGAAGCCAACGAGCGTTGCCAACGTGAGCAACGTAAGAC CATAACTGCTGAAGATATCCTTTGGGCTATGAGCAAGCTTGGGTTCGATAACTACGTGGACCCCCTCACC GTGTTCATTAACCGGTACCGTGAGATAGAGACCGATCGTGGTTCTGCACTTAGAGGTGAGCCACCGTCGT TGAGACAAACCTATGGAGGAAATGGTATTGGGTTTCACGGCCCATCTCATGGCCTACCTCCTCCGGGTCC TTATGGTTATGGTATGTTGGACCAATCCATGGTTATGGGAGGTGGTCGGTACTACCAAAACGGGTCGTCG GGTCAAGATGAATCCAGTGTTGGTGGTGGCTCTTCGTCTTCCATTAACGGAATGCCGGCTTTTGACCATT ATGGTCAGTATAAGTGA [peter@ibi98 ~]$ cat -n /home/pub/seq/cr_HAP3_CDS.fa 1 >CrHAP3 CDS 2 ATGAGCGGGGACGAGGGCGACGGTCGAGATGGCAACAGCAATGCGCGTGA 3 GCAGGACAGGTTCCTGCCCATCGCCAACATCAGCAGAATTATGAAGAAGG 4 CGCTCCCGAACAACGCGAAAATAGCCAAGGATGCAAAGGAGACGGTCCAG 5 GAGTGCGTCTCGGAGTTCATTAGCTTCATCACGTCGGAGGCTAGTGACAA 6 GTGCCAGCGGGAGAAGCGGAAAACAATTAACGGCGACGACCTGCTGTGGG 7 CCATGACGACGTTGGGCTTTGAGGAGTACCTGGAGCCGCTCAAACTCTAC 8 TTAGCCAAGTTCAGAGAGGCTGAGGCGGCGACATCCAATAAGCCAGGGGG 9 CGGCTCAGGTGCCAACGCGGAGGCAAAGCGTGAGGCGGCCGCGGCGGCTG 10 CGGCTGCGGCCGCAGCTGCGGCTGCAGTTTCGCAGCAACAGGCGGCGCAG 11 CAGCAGATGGCGGCGCAGCTGCAAGCTGGCATGGCGTTCCCGGGGCTCAT 12 GCCGGCGCAGTTCCAGGGGCTACCGCCCGGCATGATTCCCGCTGGCTTCC 13 CCGGACTGCCGCTGCCTCCGGGCGTGCCGGGCCTGATGATGCCAGGTGGC 14 GTTGTGCCCAAGCAGGAGCCCCCCAAGTAG
2. 连接文件。
[peter@ibi98 ~]$ cat /home/pub/seq/at_LEC1_CDS.fa /home/pub/seq/cr_HAP3_CDS.fa
>AT1G21970 At_NM_102046 gi|42562231:47-763 Arabidopsis thaliana LEC1 (LEAFY COTYLEDON 1);
transcription factor AT1G21970 (LEC1) mRNA, complete cds
ATGGAACGTGGAGCTCCCTTCTCTCACTATCAGCTACCAAAATCCATCTCTGAATTGAACTTGGACCAGC
ACAGCAACAACCCAACCCCAATGACCAGCTCAGTCGTAGTAGCCGGCGCCGGTGACAAGAACAATGGTAT
CGTGGTCCAGCAGCAACCACCATGTGTGGCTCGTGAGCAAGACCAATACATGCCAATCGCAAACGTCATA
AGAATCATGCGTAAAACCTTACCGTCTCACGCCAAAATCTCTGACGACGCCAAAGAAACGATTCAAGAAT
GTGTCTCCGAGTACATCAGCTTCGTGACCGGTGAAGCCAACGAGCGTTGCCAACGTGAGCAACGTAAGAC
CATAACTGCTGAAGATATCCTTTGGGCTATGAGCAAGCTTGGGTTCGATAACTACGTGGACCCCCTCACC
GTGTTCATTAACCGGTACCGTGAGATAGAGACCGATCGTGGTTCTGCACTTAGAGGTGAGCCACCGTCGT
TGAGACAAACCTATGGAGGAAATGGTATTGGGTTTCACGGCCCATCTCATGGCCTACCTCCTCCGGGTCC
TTATGGTTATGGTATGTTGGACCAATCCATGGTTATGGGAGGTGGTCGGTACTACCAAAACGGGTCGTCG
GGTCAAGATGAATCCAGTGTTGGTGGTGGCTCTTCGTCTTCCATTAACGGAATGCCGGCTTTTGACCATT
ATGGTCAGTATAAGTGA
>CrHAP3 CDS
ATGAGCGGGGACGAGGGCGACGGTCGAGATGGCAACAGCAATGCGCGTGA
GCAGGACAGGTTCCTGCCCATCGCCAACATCAGCAGAATTATGAAGAAGG
CGCTCCCGAACAACGCGAAAATAGCCAAGGATGCAAAGGAGACGGTCCAG
GAGTGCGTCTCGGAGTTCATTAGCTTCATCACGTCGGAGGCTAGTGACAA
GTGCCAGCGGGAGAAGCGGAAAACAATTAACGGCGACGACCTGCTGTGGG
CCATGACGACGTTGGGCTTTGAGGAGTACCTGGAGCCGCTCAAACTCTAC
TTAGCCAAGTTCAGAGAGGCTGAGGCGGCGACATCCAATAAGCCAGGGGG
CGGCTCAGGTGCCAACGCGGAGGCAAAGCGTGAGGCGGCCGCGGCGGCTG
CGGCTGCGGCCGCAGCTGCGGCTGCAGTTTCGCAGCAACAGGCGGCGCAG
CAGCAGATGGCGGCGCAGCTGCAAGCTGGCATGGCGTTCCCGGGGCTCAT
GCCGGCGCAGTTCCAGGGGCTACCGCCCGGCATGATTCCCGCTGGCTTCC
CCGGACTGCCGCTGCCTCCGGGCGTGCCGGGCCTGATGATGCCAGGTGGC
GTTGTGCCCAAGCAGGAGCCCCCCAAGTAG
如果要保存合并的结果,使用输出重定向保存到文件即可,关于输入输出重定向(简称重定向)我们在后面还要详细讲。
3. 利用cat和输出重定向,从键盘创建一个文件。
[peter@ibi98 ~]$ cat >test
This is a test
using cat to create a file.
输入完成后,按Ctrl+d退出。ls会发现当前目录下多了一个test文件,用cat查看文件内容,就是刚才输入的内容。
[peter@ibi98 ~]$ ls flower lily prac test [peter@ibi98 ~]$ cat test This is a test using cat to create a file.
或者使用即时文件重定向(<<)终止输入:
[peter@ibi98 ~]$ cat <<eof >test_eof > This is another test > using cat and eof to create a file. > eof [peter@ibi98 ~]$ ls flower lily prac test test_eof [peter@ibi98 ~]$ cat test_eof This is another test using cat and eof to create a file.
eof是End of File的意思,当然您也可以换成别的不常见字符串,输入的时候一旦输入了这个字符串,就会终止输入。(思考一下,为什么常见的字符串不行呢?)
4. 放在管道的开头,给后面的命令提供数据,如:
[peter@ibi98 ~]$ cat /home/pub/seq/at_LEC1_CDS.fa |grep '>'
>AT1G21970 At_NM_102046 gi|42562231:47-763 Arabidopsis thaliana LEC1 (LEAFY COTYLEDON 1);
transcription factor AT1G21970 (LEC1) mRNA, complete cds
grep命令的作用是打印包含某个模式的行,这里是打印包含大于号的行。这个Fasta格式的文件里只有注释行里有一个大于号,所以就是打印出注释行。