Linux常用的命令及初窺正則表達式--The learning notes of the biostar handbook(2)

Linux常用的命令

目錄操作命令

  • ls 顯示目錄文件

ls -al
-a 顯示所有文件,包括.及..
-l 詳細信息
-d 顯示目錄本身的信息,而不看目錄下的內容
-i 顯示文件i nodes

  • mkdir 目錄創建命令

mkdir -p ~/abc/def 同時創建目錄abc及子目錄def
-p 遞歸創建,可同時遞歸創建多個目錄

  • cd 變換進入目標目錄

cd ~ 代表進入家目錄
cd ..返回上一級目錄

  • rmdir 刪除空目錄

rmdir [dir] 目標目錄必須為空目錄才能刪除,否則報錯
rm -r [dir] 刪除目錄(包括空與非空目錄)

  • pwd 輸出當前目錄

pwd

文件操作命令

  • cp 文件或目錄復制命令;復制的同時支持修改文件名
    cp [源文件] [目標文件]

-r 復制目錄
-p 保留文件屬性

  • mv 剪切文件、重命名
    mv [源文件] [目標文件]
  • rm 刪除文件或目錄

-r 刪除目錄
-f 強制執行

  • touch 創建空文件
    touch filename
  • cat 顯示文件內容(不適合文件分屏查看)
    cat filename

-n顯示行號

  • more 分頁顯示文件內容
    more filename
  • head 顯示文件內容頭幾行

-n 制定行數 (默認顯示頭10行)

壓縮及解壓縮命令

  • .gz Linux下最常用的壓縮格式
    命令:gzip(壓縮),gunzip|gzip -d(解壓縮)

壓縮后不保留源文件

  • tar Linux下的壓縮命令不能壓縮目錄,只能壓縮單個文件,那么如果需要壓縮目錄需要對目錄先進行打包
    tar [打包后的文件名] [需要打包的目錄]

通常我們下載的文件或安裝包文件名大部分以.tar.gz結尾,解壓縮的命令可用 tar -zxvf filename 壓縮生成.tar.gz的文件可用tar -cxvf filename.tar.gz filename
-c: 建立壓縮檔案
-x:解壓
-t:查看內容
-r:向壓縮歸檔文件末尾追加文件
-u:更新原壓縮包中的文件
這五個是獨立的命令,壓縮解壓都要用到其中一個,可以和別的命令連用但只能用其中一個。
下面的參數是根據需要在壓縮或解壓檔案時可選的。
-z:有gzip屬性的
-j:有bz2屬性的
-Z:有compress屬性的
-v:顯示所有過程
-O:將文件解開到標準輸出
如果是tar.bz2結尾的文件則用一下命令解壓
tar -xjvf filename.tar.bz2
壓縮命令
tar -cjf filename.tar.bz2

"|"管道符

將上一個命令的標準輸出結果作為下一個命令的標準輸入

實例演示

創建目錄~/biostarhandbook/lec03
mldir -p ~/biostarhandbook/lec03
進入目錄
cd biostarhandbook/lec03
下載文件:SGD_features.tab及SGD_features.README

wget https://downloads.yeastgenome.org/curation/chromosomal_feature/SGD_features.tab
wget https://downloads.yeastgenome.org/curation/chromosomal_feature/SGD_features.README

查看目錄下文件
ls -l

總用量 3192

-rw-rw-r-- 1 *** *** 1557 11月 19 2014 SGD_features.README
-rw-rw-r-- 1 *** *** 3264490 1月 14 2017 SGD_features.tab

顯示當前所在目錄
pwd
將兩個文件打包并壓縮為gz格式

cd ..
tar -czvf lec03.tar.gz lec03
ls
# lec03  lec03.tar.gz

解壓縮
tar -xzvf lec03.tar.gz
查看SGD_features.tab
more SGD_features.tab
cat命令查看文件
cat SGD_features.tab
用wc命令查看SGD_features.tab文件的行數、字數、字符數
cat SGD_features.tab | wc

將cat命令的標準輸出做為wc的標準輸入
16454 425719 3264490

如果僅需查看行數
cat SGD_features.tab | wc -l

16454

查看文件的頭10行
cat SGD_features.tab | head

grep與正則表達式

在初步學習了grep之后,覺得grep類似與我們常用的文本程序下的查找與替換工具,且支持了強大正則表達式,所以grep的功能變得非常強大。

grep

grep過濾來自一個文件成標準輸入匹配模式的內容,是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來。
具體的參數可用man grep查看

實例演示

查找SGD_features.tab文件匹配“YAL060W”的行
cat SGD_features.tab | grep YAL060W

grep -i pattern files :不區分大小寫地搜索。默認情況區分大小寫,
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整個單詞,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
grep -C number pattern files :匹配的上下文分別顯示[number]行,
grep pattern1 | pattern2 files :顯示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :顯示既匹配 pattern1 又匹配 pattern2 的行。
grep -n pattern files 即可顯示行號信息
grep -c pattern files 即可查找總行數
grep -v pattern files 查找不包含匹配項的行

查看不包含Dubious的總行數
cat SGD_features.tab | grep -v Dubious | wc -l

15737

輸入與輸出的重定向

Linux的標準輸入輸出

設備 設備文件名 文件描述符 類型
鍵盤 /dev/stdin 0 標準輸入
顯示器 /dev/stdout 1 標準輸出
顯示器 /dev/stderr 2 標準錯誤輸出

輸出重定向

類型 符號 作用
標準輸出重定向 命令>文件 以覆蓋的方式
命令>>文件 以追加的方式
標準錯誤輸出重定向 錯誤命令 2>文件 以覆蓋的方式
錯誤命令 2>>文件 以覆蓋的方式

實例演示

如何將匹配得到的行輸出為文件。grep命令默認的標準輸出的顯示器,即為/dev/stdout,要保存為文件,需要將輸出重定向>
cat SGD_features.tab | grep YAL060W > match.tab
ls

match.tab SGD_features.README SGD_features.tab

查看match.tab
more match.tab

查看匹配gene的行數
cat SGD_features.tab | grep gene | wc -l

2093

利用cut命令截取第二列中匹配ORF的行
先查看第二列的頭10行
cat SGD_features.tab | cut -f 2 | head

-d : 指定字段分隔符,默認是制表符
 -f :指定要顯示的字段
 -f1 :顯示第一個字段
 -f 1,3 顯示第一個和第三個
 -f 1-3 顯示第一個到第三個
 -b : 截取字節數
 -c : 截取字符

cat SGD_features.tab | cut -f 2 | grep ORF | head
查看匹配的總行數
cat SGD_features.tab | cut -f 2 | grep ORF | wc -l
同時截取多列
cat SGD_features.tab | cut -f 2,3,4 | grep ORF | head
去除含有Dubious的行
cat SGD_features.tab | cut -f 2,3,4 | grep ORF | grep -v Dubious | wc -l
上述命令如用awk實現

cat SGD_features.tab | awk '{print $2}' | grep ORF | head
cat SGD_features.tab | awk '{print $2,$3,$4}' | grep ORF | head

截取第二列保存為type.txt文件
cat SGD_features.tab | cut -f 2 > type.txt
對type.txt條目進行連續排序并查看頭10條
cat type.txt | sort | head
將相同的條目顯示為1個
cat type.txt | sort |uniq | head
顯示重復條目的個數
cat type.txt | sort | uniq -c | head
顯示條目的種類
cat type.txt | sort | uniq -c | wc -l

正則表達式

bash的正則表達式包括基礎正則表達式擴展正則表達式,它用來匹配預期要求的字符串。
基礎正則表達式:

符號 描述
. 匹配除換行符以外的單個字符
^ 匹配前面字符串的開頭
$ 匹配前面字符的結尾
* 匹配前一個字符的0或多個
[] 匹配中括號中的任意一個字符
[a-z][0-9][A-Z] 匹配范圍內的任意一個字符
[^] 匹配除中括號內的字符以外的字符
{n}{n,} 匹配大括號前面字符至少n個字符
{n,m} 匹配大括號前面字符至少n個字符,最多m個字符
< 邊界符,匹配字符串開始
> 邊界符,匹配字符串解釋

擴展正則表達式:

符號 描述
+ 匹配前一個字符的1個或多個
? 匹配前一個字符的0個或多個
|
() 單元或組合

sed及awk

目前還學習,感覺好難理解,尤其是awk,真的是一門編程語言。等待日后完善吧。

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

推薦閱讀更多精彩內容