又學一招,來自組織的微信群
如果.bashrc 無法保存,解決方案
刪掉.swp
刪掉.bashrc.bak
就OK
conda
查看當前環境下,都安裝了哪些軟件
conda list
進入正題,AWK
前一段時間,看到好多生信組的童鞋不遠千里的坐小火車去學習awk,覺得不是很理解。直到最近自己要準備各種文件,才覺得此乃神器,必須掌握
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開頭的單詞的行。
> #錨定單詞的結束,如'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