又學(xué)一招,來自組織的微信群
如果.bashrc 無法保存煤痕,解決方案
刪掉.swp
刪掉.bashrc.bak
就OK
conda
查看當(dāng)前環(huán)境下,都安裝了哪些軟件
conda list
進(jìn)入正題,AWK
前一段時(shí)間摆碉,看到好多生信組的童鞋不遠(yuǎn)千里的坐小火車去學(xué)習(xí)awk塘匣,覺得不是很理解。直到最近自己要準(zhǔn)備各種文件巷帝,才覺得此乃神器忌卤,必須掌握
簡(jiǎn)書已有牛人的寫作
生信AWK
AWK的技術(shù)資料
awk文本操作
以下摘抄自別人
awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file
[-F|-f|-v] 大參數(shù),-F指定分隔符楞泼,-f調(diào)用腳本驰徊,-v定義變量 var=value
' ' 引用代碼塊
BEGIN 初始化代碼塊,在對(duì)每一行進(jìn)行處理之前堕阔,初始化代碼棍厂,主要是引用全局變量,設(shè)置FS分隔符
// 匹配代碼塊超陆,可以是字符串或正則表達(dá)式
{} 命令代碼塊牺弹,包含一條或多條命令
; 多條命令使用分號(hào)分隔
END 結(jié)尾代碼塊时呀,在對(duì)每一行進(jìn)行處理之后再執(zhí)行的代碼塊例驹,主要是進(jìn)行最終計(jì)算或輸出結(jié)尾摘要信息
-F 指定分隔符
$0 表示整個(gè)當(dāng)前行
$1 每行第一個(gè)字段
NF 字段數(shù)量變量
NR 每行的記錄號(hào),多文件記錄遞增
我們這里主要對(duì)-F的例子進(jìn)行記錄退唠。
$1 指指定分隔符后,第一個(gè)字段荤胁,$3第三個(gè)字段瞧预, \t是制表符
一個(gè)或多個(gè)連續(xù)的空格或制表符看做一個(gè)定界符,即多個(gè)空格看做一個(gè)空格
awk -F";" '{print $1}' file 以分號(hào)分隔仅政,選擇第一列:
awk -F";" '{print $1 $3}' file //$1與$3相連輸出垢油,不分隔
awk -F";" '{print $1,$3}' file //多了一個(gè)逗號(hào),$1與$3使用空格分隔
awk -F";" '{print $1 " " $3}' file //$1與$3之間手動(dòng)添加空格分隔
awk -F";" '{print "this is gene name :" "***" $3 }' file //自定義輸出
awk -F ";" '{print NF}' file //顯示每行有多少字段
awk -F; 'NF==4 {print }' file //顯示只有4個(gè)字段的行
awk -F";" 'NF>2{print $0}' file //顯示每行字段數(shù)量大于2的行
awk '{print NR,$0}' /etc/passwd //輸出每行的行號(hào)
awk -F: '{print NR,NF,$NF,"\t",$0}' file //依次打印行號(hào)圆丹,字段數(shù)滩愁,最后字段值,制表符辫封,每行內(nèi)容
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
個(gè)人趕腳比較有用的命令less
用less命令
搜索/
下一個(gè)hit n
前一個(gè)hit N
JAVA安裝
因?yàn)閖ava9和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 通配符
這里有一個(gè)很好的解釋妻味,每天一個(gè)linux命令
^ #錨定行的開始 如:'^grep'匹配所有以grep開頭的行。
$ #錨定行的結(jié)束 如:'grep$'匹配所有以grep結(jié)尾的行欣福。
. #匹配一個(gè)非換行符的字符 如:'gr.p'匹配gr后接一個(gè)任意字符责球,然后是p。
-
匹配零個(gè)或多個(gè)先前字符 如:'*grep'匹配所有一個(gè)或多個(gè)空格后緊跟grep的行。 這個(gè)被加粗純粹是因?yàn)閙arkdown混淆了雏逾,不是我有意的
.* #一起用代表任意字符嘉裤。
[] #匹配一個(gè)指定范圍內(nèi)的字符,如'[Gg]rep'匹配Grep和grep栖博。
[^] #匹配一個(gè)不在指定范圍內(nèi)的字符屑宠,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一個(gè)字母開頭,緊跟rep的行笛匙。
(..) #標(biāo)記匹配字符侨把,如'(love)',love被標(biāo)記為1妹孙。
< #錨定單詞的開始秋柄,如:'<grep'匹配包含以grep開頭的單詞的行贱纠。
> #錨定單詞的結(jié)束坑填,如'grep>'匹配包含以grep結(jié)尾的單詞的行固歪。
x{m} #重復(fù)字符x夕土,m次瓢姻,如:'0{5}'匹配包含5個(gè)o的行浅辙。
x{m,} #重復(fù)字符x,至少m次魔慷,如:'o{5,}'匹配至少有5個(gè)o的行丙笋。
x{m,n} #重復(fù)字符x雹舀,至少m次芦劣,不多于n次,如:'o{5,10}'匹配5--10個(gè)o的行说榆。
\w #匹配文字和數(shù)字字符虚吟,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零個(gè)或多個(gè)文字或數(shù)字字符签财,然后是p串慰。
\W #\w的反置形式,匹配一個(gè)或多個(gè)非單詞字符唱蒸,如點(diǎn)號(hào)句號(hào)等邦鲫。
\b #單詞鎖定符,如: '\bgrep\b'只匹配grep神汹。
POSIX字符:
為了在不同國(guó)家的字符編碼中保持一至庆捺,POSIX(The Portable Operating System Interface)增加了特殊的字符類,如[:alnum:]是[A-Za-z0-9]的另一個(gè)寫法屁魏。要把它們放到[]號(hào)內(nèi)才能成為正則表達(dá)式疼燥,如[A- Za-z0-9]或[[:alnum:]]。在linux下的grep除fgrep外蚁堤,都支持POSIX的字符類醉者。
[:alnum:] #文字?jǐn)?shù)字字符
[:alpha:] #文字字符
[:digit:] #數(shù)字字符
[:graph:] #非空字符(非空格但狭、控制字符)
[:lower:] #小寫字符
[:cntrl:] #控制字符
[:print:] #非空字符(包括空格)
[:punct:] #標(biāo)點(diǎn)符號(hào)
[:space:] #所有空白字符(新行,空格撬即,制表符)
[:upper:] #大寫字符
[:xdigit:] #十六進(jìn)制數(shù)字(0-9立磁,a-f,A-F)
另外一個(gè)在登陸cluster運(yùn)行命令的時(shí)候常用的命令screen這個(gè)沒怎么看懂剥槐,但是覺得有用唱歧,主要是每次分析用interctive