生物信息学之玩转Linux---学习笔记(三)---生信技能树

Linux系统是进行生物信息学分析的基石,许多生物信息学软件都是基于Linux系统开发的。所以学习Linux对于生物信息学分析尤为重要。

学习链接:https://research.biomart.cn/experiment/course_detail.htm?id=25&from=wechat_20190713

承接上一篇,接下来的就是Linux的三驾马车:grep、awk、sed

grep是一个强大的文本搜索工具,可以再文件中查找符合条件的行,并且把匹配的行打印出来

grep的常用参数:  
#grep+'文字'+文件
grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash  #把含有root的行匹配出来并且打印
# -c  含有目标文字的行数,直接打印出来行数
grep -c bin /etc/passwd
31
# -n  打印出匹配目标的行,并且打印出目标的行号
grep -n bin /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
2:daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3:bin:x:2:2:bin:/bin:/usr/sbin/nologin
4:sys:x:3:3:sys:/dev:/usr/sbin/nologin
5:sync:x:4:65534:sync:/bin:/bin/sync
6:games:x:5:60:games:/usr/games:/usr/sbin/nologin
7:man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8:lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9:mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
10:news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
11:uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
12:proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
13:www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
14:backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
15:list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
16:irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
17:gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
18:nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
19:systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false
20:systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false
21:systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false
22:systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false
23:syslog:x:104:108::/home/syslog:/bin/false
24:_apt:x:105:65534::/nonexistent:/bin/false
25:lxd:x:106:65534::/var/lib/lxd/:/bin/false
26:messagebus:x:107:111::/var/run/dbus:/bin/false
27:uuidd:x:108:112::/run/uuidd:/bin/false
28:dnsmasq:x:109:65534:dnsmasq,,,:/var/lib/misc:/bin/false
29:sshd:x:110:65534::/var/run/sshd:/usr/sbin/nologin
30:ubuntu:x:500:500:ubuntu,,,:/home/ubuntu:/bin/bash
31:ntp:x:111:117::/home/ntp:/bin/false
# -o 输出匹配到的所有的字符
grep -o root /etc/passwd
root
root
root

更多的grep参数的使用方法,可以 man grep 进行查找

awk:是一个强大的文本分析工具,对特定的行中的特定列进行操作;简单来说awk就是把文件逐行读入,以分隔符进行切割,然后对选定的列进行输出

awk默认的分隔符:空格或者tab -F 指定分隔符

$0代表所有区域,$1代表第一区域,$2代表第二区域......

awk有书写规范
awk ‘{action }’ file
awk ‘ pattern {action}' fille
#接下来,我们使用拟南芥数据进行学习
#对拟南芥注释文件的第四列进行提取,|查看前 10行
awk '{print $4}' Arabidopsis_thaliana.TAIR10.44.gff3|head

30427671
19698289
23459830
18585056
26975502
366924
154478
Information

#筛选出第三列是gene所有的行,并且输出筛选的第四列|查看前10行
awk '$3=="gene"{print $4}' Arabidopsis_thaliana.TAIR10.44.gff3 |head
3631
6788
11649
23121
31170
33365
38444
44970
47234
49909

#将拟南芥注释文件的第5列和第4列进行做差|查看后10行
awk '{print $5-$4}' Arabidopsis_thaliana.TAIR10.44.gff3 |tail
281
281
0
1506
1506
389
389
434
434
0

更多的awk参数的使用方法,可以 man awk 进行查找

sed是一种强大的文件编辑器,它一起处理一行内容。

sed有书写规范: sed 's/a/b/g' file
sed的参数使用
-e :直接在命令模式上运行sed的动作编辑
-n :只有经过sed处理过的行,才会被打印出来
-r :支持正则表达式
-i :直接修改读取的文件内容,而不输出只终端
在’ ‘中还有命令参数
s:取代,最常用也是最重要的一个命令参数
d:删除,d后通常不接任何东西
p:打印 通常p会与参数 -n 一起使用
#以拟南芥gff3文件作为例子
tail -4 Arabidopsis_thaliana.TAIR10.44.gff3
Pt  araport11   CDS 152806  153195  .   +   0   ID=CDS:ATCG01310.1;Parent=transcript:ATCG01310.1;protein_id=ATCG01310.1
Pt  araport11   exon    153878  154312  .   +   .   Parent=transcript:ATCG01310.1;Name=ATCG01310.1.exon2;constitutive=1;ensembl_end_phase=0;ensembl_phase=0;exon_id=ATCG01310.1.exon2;rank=2
Pt  araport11   CDS 153878  154312  .   +   0   ID=CDS:ATCG01310.1;Parent=transcript:ATCG01310.1;protein_id=ATCG01310.1
#将Pt全部进行替换
tail -4 Arabidopsis_thaliana.TAIR10.44.gff3 |sed 's/Pt/Bioinform/'|less
Bioinform       araport11       CDS     152806  153195  .       +       0       ID=CDS:ATCG01310.1;Parent=transcript:ATCG01310.1;protein_id=ATCG01310.1
Bioinform       araport11       exon    153878  154312  .       +       .       Parent=transcript:ATCG01310.1;Name=ATCG01310.1.exon2;constitutive=1;ensembl_end_phase=0;ensembl_phase=0;exon_id=ATCG01310.1.exon2;rank=2
Bioinform       araport11       CDS     153878  154312  .       +       0       ID=CDS:ATCG01310.1;Parent=transcript:ATCG01310.1;protein_id=ATCG01310.1
#在示例文件前面增加文字

tail -4 Arabidopsis_thaliana.TAIR10.44.gff3 |sed 's/^/12345/g'|less
12345Pt araport11       CDS     152806  153195  .       +       0       ID=CDS:ATCG01310.1;Parent=transcript:ATCG01310.1;protein_id=ATCG01310.1
12345Pt araport11       exon    153878  154312  .       +       .       Parent=transcript:ATCG01310.1;Name=ATCG01310.1.exon2;constitutive=1;ensembl_end_phase=0;ensembl_phase=0;exon_id=ATCG01310.1.exon2;rank=2
12345Pt araport11       CDS     153878  154312  .       +       0       ID=CDS:ATCG01310.1;Parent=transcript:ATCG01310.1;protein_id=ATCG01310.1

更多的sed参数的使用方法,可以 man sed进行查找

其他常用命令:重定向和管道

重定向:
>   将内容重定向到新的文件中
head Arabidopsis_thaliana.TAIR10.44.gff3 > tmp1.txt
less tmp1.txt
##gff-version 3
##sequence-region   1 1 30427671
##sequence-region   2 1 19698289
##sequence-region   3 1 23459830
##sequence-region   4 1 18585056
##sequence-region   5 1 26975502
##sequence-region   Mt 1 366924
##sequence-region   Pt 1 154478
#!genome-build The Arabidopsis Information Resource TAIR10
#!genome-version TAIR10
>>:将文件追加到末尾
head Arabidopsis_thaliana.TAIR10.44.gff3 >> tmp1.txt
less tmp1.txt
##gff-version 3
##sequence-region   1 1 30427671
##sequence-region   2 1 19698289
##sequence-region   3 1 23459830
##sequence-region   4 1 18585056
##sequence-region   5 1 26975502
##sequence-region   Mt 1 366924
##sequence-region   Pt 1 154478
#!genome-build The Arabidopsis Information Resource TAIR10
#!genome-version TAIR10
##gff-version 3
##sequence-region   1 1 30427671
##sequence-region   2 1 19698289
##sequence-region   3 1 23459830
##sequence-region   4 1 18585056
##sequence-region   5 1 26975502
##sequence-region   Mt 1 366924
##sequence-region   Pt 1 154478
#!genome-build The Arabidopsis Information Resource TAIR10
#!genome-version TAIR10

可以看见文件出现了两遍,第二遍就是追加到末尾的
管道: |   将前一部分的输出作为后一部分的输入
tail -4 Arabidopsis_thaliana.TAIR10.44.gff3 |sed 's/Pt/Bioinform/'|less

打包和压缩

压缩:
gzip filename
bzip2 filename
tar -zcvf filename
zip test.zip test.txt
解压缩:
gzip -d filename.gz
bzip2 -d filename.bz2
tar -zxvf filemame.tar.gz
unzip test.zip

软链接和硬链接

软硬连接可以理解为是电脑桌面的快捷方式
不过二者是有区别的:
软链接中,如果把源文件删除,那么软链接就失效了
硬链接中,如果源文件删除,则不受影响

#软链接
ln -s /home/ubuntu/reference/At_refe/Arabidopsis_thaliana.TAIR10.44.gff3 ./
lrwxrwxrwx  1 ubuntu ubuntu   66 Jul 16 16:45 Arabidopsis_thaliana.TAIR10.44.gff3 -> /home/ubuntu/reference/At_refe/Arabidopsis_thaliana.TAIR10.44.gff3
drwxrwxr-x 24 ubuntu ubuntu 4.0K Jul 16 12:41 miniconda3
-rw-rw-r--  1 ubuntu ubuntu  68M Apr 19 23:47 Miniconda3-latest-Linux-x86_64.sh
-rw-------  1 ubuntu ubuntu 139K Jul 16 02:33 nohup.out
#硬链接
ln /home/ubuntu/reference/At_refe/Arabidopsis_thaliana.TAIR10.44.gtf.gz ./
-rw-rw-r--  1 ubuntu ubuntu    0 Jul 15 10:00 aa.txt
lrwxrwxrwx  1 ubuntu ubuntu   66 Jul 16 16:45 Arabidopsis_thaliana.TAIR10.44.gff3 -> /home/ubuntu/reference/At_refe/Arabidopsis_thaliana.TAIR10.44.gff3
-rw-rw-r--  2 ubuntu ubuntu 9.6M Jul 15 08:34 Arabidopsis_thaliana.TAIR10.44.gtf.gz
drwxrwxr-x 24 ubuntu ubuntu 4.0K Jul 16 12:41 miniconda3
-rw-rw-r--  1 ubuntu ubuntu  68M Apr 19 23:47 Miniconda3-latest-Linux-x86_64.sh
-rw-------  1 ubuntu ubuntu 139K Jul 16 02:33 nohup.out

可以看出,软链接和硬链接的文件所占的文件大小也是不一样的。

快捷键和alias

快捷键的好处:节省字符输入

alias
type ll
ll is aliased to `ls -alF'
可以发现 ll 其实也是一个alias
通过设置环境变量,可以实现alias的永久保持
vim ~/.bashrc
alias lh ='ls -lh'
source ~/.bashrc

环境变量:设置环境变量在执行程序的时候,非常简便,不需要再填写程序的路径
配置环境变量的时候会有三种方法

方法1:
如同alias的设置那样,手动修改 ~/.bashrc
然后 source ~/.bashrc  进行永久修改
方法2:
赋值
lh='ls -lh'
$lh    #就可以执行命令,效果虽然相同,但是很少见
方法3:
修改$PATH ;修改环境变量$PATH
echo $PATH
export PATH="$PATH:/home/ubuntu/miniconda3/bin"
source ~/.bashrc    #最后进行永久修改
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355

推荐阅读更多精彩内容

  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 1,099评论 0 0
  • 本文笔记源自这里——[实验楼]欢迎大家在下面交流其中有问题的地方喜欢请点收藏,每日更新(全部已亲自实践). 一. ...
    东皇Amrzs阅读 3,993评论 7 54
  • 第 2 章 SHELL 基础知识2.1 shell脚本我们在上面简单介绍了一下什么是shell脚本,现在我们来进一...
    LiWei_9e4b阅读 1,574评论 0 0
  • grep grep的基本用法 grep命令是支持正则表达式的一个多用途文本搜索工具,一般格式为 grep 选项 模...
    王诗翔阅读 3,046评论 2 34
  • 因为遇到了路由转发404的问题,所以决定采用自定义路由。刚开始尝试了从DB里读取,但发现再以后扩展服务的时候不够灵...
    wangpeng123阅读 4,905评论 0 2