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開頭的單詞的行。
> #錨定單詞的結束,如'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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • awk: grep,sed,awk grep:文本過濾 sed:文本編輯 awk:文本格式化工具; 1 什么是aw...
    木林森閱讀 1,824評論 0 16
  • awk命令的基本使用 [root@shellscript ~]# head -n 3 /etc/passwd | ...
    古寒飛閱讀 1,079評論 0 2
  • 本章主要學習內容awk介紹 ?awk基本用法 ?awk變量 ?awk格式化 ?awk操作符 ?awk條件判斷 ?a...
    楠人幫閱讀 1,292評論 0 8
  • 轉載 原文的排版和內容都更加友好,并且詳細,我只是在這里貼出了一部分留作自己以后參考和學習,如希望更詳細了解AWK...
    XKirk閱讀 3,276評論 2 25
  • sed工具簡介 用法:sed [-nefri] 動作參數:-n:使用安靜模式(Silent)模式,一般在sed的...
    Bloo_m閱讀 1,021評論 0 1