1.grep:找出文件中含有关键字的行
在Homo_sapiens.GRCh37.87.gtf 这个文件中找出含有CRISPLD2的行
[zhangyihui@localhost ensemble-annot]$grep CRISPLD2 Homo_sapiens.GRCh37.87.gtf
16 ensembl_havana gene 84853590 84954374 . + . gene_id "ENSG00000103196"; gene_version "7"; gene_name "CRISPLD2"; gene_source "ensembl_havana"; gene_biotype "protein_coding";
2.cat:读取,显示或拼接文件内容
读取单个文件
cat one.txt
11111
读取多个文件
cat one.txt two.txt
11111
22222
从标准输入中读取
OUT-PUT_FROM_SOME | cat
例如
echo 'aaaa' | cat - one.txt
aaaa
11111
==========================
删除多余空白行,使用-s参数
cat -s file
==========================
将制表符显示为^| :-T参数,用于区分制表符和空格
cat -T file
================================
显示行号: -n参数
cat -n file
例如
cat lines.txt
11111
22222
33333
cat -n lines.txt
1 11111
2 22222
3 33333
3.head:查看文件前多少行,默认为10行
head Homo_sapiens.GRCh37.87.gtf
cat Homo_sapiens.GRCh37.87.gtf
#!genome-build GRCh37.p13
#!genome-version GRCh37
#!genome-date 2009-02
#!genome-build-accession NCBI:GCA_000001405.14
#!genebuild-last-updated 2013-09
1 ensembl_havana gene 11869 14412 . + . gene_id "ENSG00000223972"; gene_version "4"; gene_name "DDX11L1"; gene_source "ensembl_havana"; gene_biotype "pseudogene";
1 havana transcript 11869 14409 . + . gene_id "ENSG00000223972"; gene_version "4"; transcript_id "ENST00000456328"; transcript_version "2"; gene_name "DDX11L1"; gene_source "ensembl_havana"; gene_biotype "pseudogene"; transcript_name "DDX11L1-002"; transcript_source "havana"; transcript_biotype "processed_transcript"; havana_transcript "OTTHUMT00000362751"; havana_transcript_version "1"; tag "basic";
head -n 100 Homo_sapiens.GRCh37.87.gtf 查看文件前100行
4.less:使文件内容可以翻页显示,按q退出观看模式
cat Homo_sapiens.GRCh37.87.gtf | less -S
#!genome-build GRCh37.p13
#!genome-version GRCh37
#!genome-date 2009-02
#!genome-build-accession NCBI:GCA_000001405.14
#!genebuild-last-updated 2013-09
1 ensembl_havana gene 11869 14412 . + . gene_id "ENSG00000223972"; ge
1 havana transcript 11869 14409 . + . gene_id "ENSG00000223972"; ge
1 havana exon 11869 12227 . + . gene_id "ENSG00000223972"; gene_versi
1 havana exon 12613 12721 . + . gene_id "ENSG00000223972"; gene_versi
1 havana exon 13221 14409 . + . gene_id "ENSG00000223972"; gene_versi
(END)
5.sed :文本替换
模式:sed 's/pattern/replace_string/' file >new.file
将a替换为A
echo aaaaa | sed 's/a/A/'
Aaaaa 默认将每一行中第一处符合模式的内容替换掉
后缀/g参数:替换每一处匹配
echo aaaaa | sed 's/a/A/g'
AAAAA
/Ng:从第N处开始匹配替换,当N=2时,从第二处开始匹配替换
echo aaaaa | sed 's/a/A/2g'
aAAAA
=================================
移除空白行,^$表示空白行
sed '/^$/d' file
/pattern/d会移除匹配样式的行
================================
已匹配字符串标记
可以用&标记匹配样式的字符串,就能够在替换字符串时使用已匹配的内容
例如
echo this is an example | sed 's/\w\ + [&]/g'
[this] [is] [an] [examole]
\w\ +表示匹配每一个单词,然后用[&]替换
=================================
字串匹配标记
将digit 7替换为7,\1表示匹配到的第一个字符串,\2表示匹配到的第二个字符串
echo this is digit 7 in a number | sed 's/digit ([0-9]\)/\1/'
this is 7 in a number
6.vi:创建文件并写入内容
vi test.fa #创建一个后缀.fa的文件,会出现下面这种情况
~
~
~
"a" [新文件] 0,0-1 全部
点击键盘上的“i”键,进入编辑状态 ,如果看到底部出现“插入”两字,表示成功进入编辑状态,此时就可以在文件中输入你想要输入的内容了
vi test.fa
~
~
-- 插入 -- 0,1 全部
输入想插入的内容,输入完成后点击键盘上的“esc”键,退出编辑
vi a fa
>chr1
AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG
~
~
-- 插入 -- 2,46 全部
输入:wq,点击回车,退出并保存
vi a fa
>chr1
AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG
~
~
:wq
查看刚才是否些文件成功
cat test.fa
>chr1
AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG
7.%操作符,#操作符:根据拓展名切分文件名,“名称.扩展名”
有一些脚本是依据文件名进行各种处理的。我们可能会需要在保留扩展名的同时修改文件名,转换文件格式或提取部分文件名。
${VAR%.*}从$VAR中删除位于%右侧的通配符(.*)所匹配的字符串,通配符从右向左进行匹配,%属于非贪婪操作
例如
VAR = hack.fun.book.txt
echo ${VAR%.*}
输出结果为
hack.fun.book
操作符%%:贪婪操作从右向左匹配符合条件的最长字符串
echo ${VAR%%.*}
hack
#操作符,与%类似,不过求知的方向从左向右
${VAR#*.}删除位于#右侧的通配符所匹配的字符串。通配符从左向右进行匹配
和%%类似,#也有一个相对应的贪婪操作符
echo ${VAR#*.}
hack
echo ${VAR##*.}
txt
网友评论