3.1 biostar lesson3 linux学习日记;java版本;awk

又学一招,来自组织的微信群
如果.bashrc 无法保存,解决方案
删掉.swp
删掉.bashrc.bak
就OK

conda

查看当前环境下,都安装了哪些软件

conda list

发现有一篇很好的介绍文章
还有一篇

进入正题,AWK

前一段时间,看到好多生信组的童鞋不远千里的坐小火车去学习awk,觉得不是很理解。直到最近自己要准备各种文件,才觉得此乃神器,必须掌握

已有牛人的写作
生信AWK
AWK的技术资料

酷壳牛人教程
AWK
sed
shell
linux

awk文本操作

以下摘抄自别人

awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file
[-F|-f|-v] 大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=value
' ' 引用代码块
BEGIN 初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符
// 匹配代码块,可以是字符串或正则表达式
{} 命令代码块,包含一条或多条命令
; 多条命令使用分号分隔
END 结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息
-F 指定分隔符
$0 表示整个当前行
$1 每行第一个字段
NF 字段数量变量
NR 每行的记录号,多文件记录递增
我们这里主要对-F的例子进行记录。
$1 指指定分隔符后,第一个字段,$3第三个字段, \t是制表符
一个或多个连续的空格或制表符看做一个定界符,即多个空格看做一个空格
awk -F";" '{print $1}' file 以分号分隔,选择第一列:
awk -F";" '{print $1 $3}' file //$1与$3相连输出,不分隔
awk -F";" '{print $1,$3}' file //多了一个逗号,$1与$3使用空格分隔
awk -F";" '{print $1 " " $3}' file //$1与$3之间手动添加空格分隔
awk -F";" '{print "this is gene name :" "***" $3 }' file //自定义输出
awk -F ";" '{print NF}' file //显示每行有多少字段
awk -F; 'NF==4 {print }' file //显示只有4个字段的行
awk -F";" 'NF>2{print $0}' file //显示每行字段数量大于2的行
awk '{print NR,$0}' /etc/passwd //输出每行的行号
awk -F: '{print NR,NF,$NF,"\t",$0}' file //依次打印行号,字段数,最后字段值,制表符,每行内容
awk -F: 'NR==5{print}' file //显示第5行
awk -F: 'NR==5 || NR==6{print}' file //显示第5行和第6行
---------分隔符----------
OK 回到我们最初的问题:提取uniq的gene_name
cat file | awk -F “;” ‘{print $3}’ | awk -F " " '{print $2}' | sort |uniq |wc -l

个人赶脚比较有用的命令less

用less命令
搜索/
下一个hit n
前一个hit N

JAVA安装

因为java9和igv不兼容,所以需要安装java8,不知道为啥java7安装不了,说是不存在

brew cask install caskroom/versions/java8

然后在~/.bashrc 里面添加

export JAVA_8_HOME=`/usr/libexec/java_home -v 1.8`
export JAVA_HOME=$JAVA_8_HOME

然后在terminal里面

source ~/.bashrc

grep 通配符

这里有一个很好的解释,每天一个linux命令
^ #锚定行的开始 如:'^grep'匹配所有以grep开头的行。
$ #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
. #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。

  • 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 这个被加粗纯粹是因为markdown混淆了,不是我有意的

.* #一起用代表任意字符。
[] #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
(..) #标记匹配字符,如'(love)',love被标记为1。
< #锚定单词的开始,如:' > #锚定单词的结束,如'grep>'匹配包含以grep结尾的单词的行。
x{m} #重复字符x,m次,如:'0{5}'匹配包含5个o的行。
x{m,} #重复字符x,至少m次,如:'o{5,}'匹配至少有5个o的行。
x{m,n} #重复字符x,至少m次,不多于n次,如:'o{5,10}'匹配5--10个o的行。
\w #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
\W #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。
\b #单词锁定符,如: '\bgrep\b'只匹配grep。
POSIX字符:
为了在不同国家的字符编码中保持一至,POSIX(The Portable Operating System Interface)增加了特殊的字符类,如[:alnum:]是[A-Za-z0-9]的另一个写法。要把它们放到[]号内才能成为正则表达式,如[A- Za-z0-9]或[[:alnum:]]。在linux下的grep除fgrep外,都支持POSIX的字符类。
[:alnum:] #文字数字字符
[:alpha:] #文字字符
[:digit:] #数字字符
[:graph:] #非空字符(非空格、控制字符)
[:lower:] #小写字符
[:cntrl:] #控制字符
[:print:] #非空字符(包括空格)
[:punct:] #标点符号
[:space:] #所有空白字符(新行,空格,制表符)
[:upper:] #大写字符
[:xdigit:] #十六进制数字(0-9,a-f,A-F)

另外一个在登陆cluster运行命令的时候常用的命令screen这个没怎么看懂,但是觉得有用,主要是每次分析用interctive

你可能感兴趣的:(3.1 biostar lesson3 linux学习日记;java版本;awk)