生信 Linux生信学习生信linux

生信人应该这样学linux视频总结

2018-12-17  本文已影响63人  看远方的星
#创建一个小脚本,内容为echo $0,并运行。
vip41@VM-0-15-ubuntu:~/tmp$ vi tmp.sh
vip41@VM-0-15-ubuntu:~/tmp$ cat tmp.sh 
echo $0
vip41@VM-0-15-ubuntu:~/tmp$ bash tmp.sh 
tmp.sh
#往脚本添加$1 $2 $3,并运行脚本(后面再添加三个任意参数如12 23 34)
vip41@VM-0-15-ubuntu:~/tmp$ vi tmp.sh 
vip41@VM-0-15-ubuntu:~/tmp$ cat tmp.sh 
echo $0 $1 $2 $3
vip41@VM-0-15-ubuntu:~/tmp$ bash tmp.sh 12 23 34 
tmp.sh 12 23 34
#12 23 34 参数传入$1 $2 $3,并被echo出来。

3、通配符 : *:匹配任意长度任意字符 [ ]:匹配一个单字符范围,如[a-z],[0-9]
拓展:https://abcfy2.gitbooks.io/linux_basic/content/first_sense_for_linux/command_learning/wildcard.html

vip41@VM-0-15-ubuntu:~/tmp$ ls
2.3  a.1  a.txt  b.txt  s.1  tmp.sh
vip41@VM-0-15-ubuntu:~/tmp$ echo *.txt
a.txt b.txt
vip41@VM-0-15-ubuntu:~/tmp$ echo *.1
a.1 s.1
vip41@VM-0-15-ubuntu:~/tmp$ echo [a-z].1
a.1 s.1

4、标准头文件(有待进一步理解):
#!/bin/bash
set -e
# Function for script description and usage
usage()
{
cat <<EOF>&2
usage:
。。。。
}
5、循环:for(``:捕获待了解)、while

#for循环
vip41@VM-0-15-ubuntu:~/tmp$ ls
2.3  a.txt  s.1       tmp.sh   z1.txt  z3.txt  z5.txt  z7.txt  z9.txt
a.1  b.txt  s{i}.txt  z10.txt  z2.txt  z4.txt  z6.txt  z8.txt
vip41@VM-0-15-ubuntu:~/tmp$ for i in {3..9};do echo z${i}.txt;done
z3.txt
z4.txt
z5.txt
z6.txt
z7.txt
z8.txt
z9.txt
#捕获
vip41@VM-0-15-ubuntu:~/tmp$ for i in `ls *.txt`;do echo $i;done
s{i}.txt
z10.txt
z1.txt
z2.txt
z3.txt
z4.txt
z5.txt
z6.txt
z7.txt
z8.txt
z9.txt
a.txt:
b.txt:

6、建立软链接:

vip41@VM-0-15-ubuntu:~/tmp1$ ls ~/tmp/*.txt | while read id;do echo $id;done
/home/vip41/tmp/s{i}.txt
/home/vip41/tmp/z10.txt
/home/vip41/tmp/z1.txt
/home/vip41/tmp/z2.txt
/home/vip41/tmp/z3.txt
/home/vip41/tmp/z4.txt
/home/vip41/tmp/z5.txt
/home/vip41/tmp/z6.txt
/home/vip41/tmp/z7.txt
/home/vip41/tmp/z8.txt
/home/vip41/tmp/z9.txt
vip41@VM-0-15-ubuntu:~/tmp1$ ls ~/tmp/*.txt | while read id;do echo $(basename $id);done
s{i}.txt
z10.txt
z1.txt
z2.txt
z3.txt
z4.txt
z5.txt
z6.txt
z7.txt
z8.txt
z9.txt
vip41@VM-0-15-ubuntu:~/tmp1$ ls ~/tmp/*.txt | while read id;do ln -s $id $(basename $id);done
vip41@VM-0-15-ubuntu:~/tmp1$ ls -lh
total 0
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 a.txt: -> /home/vip41/tmp/a.txt:
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 b.txt: -> /home/vip41/tmp/b.txt:
lrwxrwxrwx 1 vip41 vip41 24 Dec 18 22:18 s{i}.txt -> /home/vip41/tmp/s{i}.txt
lrwxrwxrwx 1 vip41 vip41 23 Dec 18 22:18 z10.txt -> /home/vip41/tmp/z10.txt
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 z1.txt -> /home/vip41/tmp/z1.txt
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 z2.txt -> /home/vip41/tmp/z2.txt
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 z3.txt -> /home/vip41/tmp/z3.txt
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 z4.txt -> /home/vip41/tmp/z4.txt
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 z5.txt -> /home/vip41/tmp/z5.txt
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 z6.txt -> /home/vip41/tmp/z6.txt
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 z7.txt -> /home/vip41/tmp/z7.txt
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 z8.txt -> /home/vip41/tmp/z8.txt
lrwxrwxrwx 1 vip41 vip41 22 Dec 18 22:18 z9.txt -> /home/vip41/tmp/z9.txt

附:shell十三问:http://wiki.jikexueyuan.com/project/13-questions-of-shell/what-shell.html
7、文件 文件描述符
输入文件—标准输入(默认输入来自键盘) 0
输出文件—标准输出(默认输出到屏幕) 1
错误输出文件—标准错误(默认输出到屏幕) 2

vip41@VM-0-15-ubuntu:~/tmp1$ vi tmp.sh
vip41@VM-0-15-ubuntu:~/tmp1$ cat tmp.sh
cd ghkyu
vip41@VM-0-15-ubuntu:~/tmp1$ bash tmp.sh
tmp.sh: line 1: cd: ghkyu: No such file or directory
vip41@VM-0-15-ubuntu:~/tmp1$ bash tmp.sh 2>result.txt
vip41@VM-0-15-ubuntu:~/tmp1$ cat result.txt 
tmp.sh: line 1: cd: ghkyu: No such file or directory

8、命令替换:
1 ).``(反引号,电脑键盘Esc下面的那个键)
2 ).$()命令

vip41@VM-0-15-ubuntu:~/tmp1$ vi tmp.sh
vip41@VM-0-15-ubuntu:~/tmp1$ cat tmp.sh 
export bed=afaf
echo $bed
echo `date`
echo $(date)

vip41@VM-0-15-ubuntu:~/tmp1$ bash tmp.sh 
afaf
Tue Dec 18 23:18:27 CST 2018
Tue Dec 18 23:18:27 CST 2018

9.进程替换:http://wiki.jikexueyuan.com/project/13-questions-of-shell/what-shell.html

生信人应该这样学linux视频总结
生信人应该这样学linux视频总结

2、命令解析:
1)grep 'NT-2' config.mapping | cut -f 1 | cut -d "-" -f 1 | sort | uniq -c | grep -w 1 | awk '{print $2}' > onceid : 从config.mapping提取含NT-2的文件,在对其切割(cut),指定第一列显示(-f 1),再对第一列以-切割(-d"-")显示第一列,再排序(sort),去除重复出现的行(uniq)在行前显示重复次数(-c)匹配只有重复出现一次的文件(grep -w 1)并输出( awk '{print $2}' ),导入到onceid文件中。(出现过一次的文件需要剔除,因为一个比对需要两个fq文件)
2、grep -v -f onceid wrong.sampleid | wc: 从wrong.sampleid文件中查找onceid文件中的内容(-f onceid wrong.sampleid),再反选(-v)即不是onceid的内容,再统计个数,结果为24个需要重新比对的文件(实际比对12次)
3、

grep -v -f onceid wrong.sampleid > tmp
mv tmp wrong.samlieid

: 将需要比对的文件导入到tmp并重命名为wrong.samlieid。
4、sort -t "_" -k 1,1 fq2 : 以下划线分割,第一个下划线前为第一列,下划线后的内容为下一列。指定排序为分割后的第一列,1,1:指定起始列和终止列都为第一列(第一列和第二列长度可能不同,所以需要指定起始列和终止列)。

Linux-10 文本处理:
grep
-f : 指定范本文件file,每一行是一个查找模式。空的file文件未指定查找模式。
-w : 只有完全符合该字的行才会被输出
-c : 统计与wc命令一样
-v : 匹配但是不打印出来

tr : 转换文件中的字符
例:tr '\t' '\n' 把制表符换成换行符

cut -f : 输出指定位置处的字节
如: cut -f 1, 31-32 , 40 info :
默认以制表符为分隔,分割并打印出info文件的 第一列 第31列到32列 第40列
-d ‘;’ :指定分隔符(;)

sed 's///g' : 替换分隔符
如:sed 's/;/\t/g' : 将分隔符的分号换成\t

paste -s -d + | bc
-s 将每个文件合并成行而不是按行粘贴
-d 指定不同于空格或tab键的域分隔符。
| bc : 在前面指定表达式就会帮助你算出来

awk'{print $1}" tmp : 打印出第一列

linux-12 数据格 : http://www.jianshu.com/p/b000a2f0679f

友情阅读推荐:
生信技能树公益视频合辑:学习顺序是linux,r,软件安装,geo,小技巧,ngs组学!B站链接:https://m.bilibili.com/space/338686099
YouTube链接:[https://m.youtube.com/channel/UC67sImqK7V8tSWHMG8azIVA/playlists(https://m.youtube.com/channel/UC67sImqK7V8tSWHMG8azIVA/playlists)
生信工程师入门最佳指南:https://mp.weixin.qq.com/s/vaX4ttaLIa19MefD86WfUA
学徒培养:https://mp.weixin.qq.com/s/3jw3_PgZXYd7FomxEMxFmw

上一篇 下一篇

猜你喜欢

热点阅读