在Linux系統里常用於文本查看、操作、統計的命令:
通過多敲鍵盤,形成手感 肌肉記憶 ,熟練掌握這些命令,在以後生信分析中游刃有餘。以下是每個命令的詳細的介紹(主要是跟著 生信技能樹小郭老師 學習做的筆記)
接下來通過示例把10個命令的常用參數和用法展示出來:
參數的用法介紹:
注意事項:
用 cat 命令可以 查看文本 ,也可以 編輯文本 ,編輯文本要加 > 符號,退出時,另起一行,按 control C 退出
zcat可以查看壓縮的文本文件,tac逆向查看
結合 管道符| 使用
head / tail -n :查看文件的前 / 後 n 行,默認 10 行 (在R語言里head和tail默認是前6行)。
less命令用得最多 ,more命令用得比較少
3.1 less命令
less [參數] 文件名
less命令重要的補充用法1 :
需要注意 退出 :只要使用less命令, 按q鍵
less命令重要的補充用法2 :
參數用法:
less命令 不加參數 查看文件:
less命令加 -N參數 查看文件:顯示行號
less命令加 -S參數 查看文件:單行顯示,非常規整
對比:less和cat命令顯示文本行號的用法:less -N,cat -n
3.2 more命令
**more ** 逐頁查看,按空格翻頁,按回車換行 ,more命令一般很少用,熟練掌握less命令就好
查看壓縮文件
wc 統計字元是也把換行符統計進去,但是別的命令不一定會把換行符算進去,。
常見參數:
切記:用less命令,按q退出
cut命令是按關鍵詞來切的
常見參數:
排列前:
排列後:
解釋:1和0比,1大;7和0比,7大…在sort字典排序里,100816比1737小,所以100816排在前面。
命令行查看一個表格結構時,因為製表符對齊的原因,出現一個錯位的現象。還有 字典排序 可能和我們平時的認知不一樣,所以 加上-n參數 , 讓數值有數學意義上的大小來排序 。
uniq命令去重,只有兩行出現重復,而且是相鄰的兩行,如果不相鄰,即使出現兩行一模一樣,不會去重。
uniq命令通常和sort命令搭配使用
換其它文件試試
總之,uniq命令使用時經常和sort一起
常見參數:
常見用法1:
paste file1 file2
-s :按行合並 演示
常見用法2 : paste - -
常見參數:
要養成一個好習慣,原始數據不要輕易修改,修改的東西另外保存,文本保存用> (重定向)或是 >>(追加)
1. 用 less 查看 example.gtf ,然後管道符傳遞給 wc
2. 截取 example.gtf 第 9 列的內容
3. 在第2步的基礎上截取分號分割的第1列
4. 在第3步的基礎上排序、去重復並統計
5. 在第4步的基礎上,將空格替換成製表符
補充小知識 :
清屏 :control L
查看歷史(輸入過的)命令 :history
② 利用Linux命令行進行文本按行去重並按重復次數排序
利用linux命令行進行文本按行去重並按重復次數排序linux命令行提供了非常強大的文本處理功能,組合利用linux命令能實現好多強大的功能。本文這里舉例說明如何利用linux命令行進行文本按行去重並按重復次數排序。主要用到的命令有sort,uniq和cut。其中,sort主要功能是排序,uniq主要功能是實現相鄰文本行的去重,cut可以從文本行中提取相應的文本列(簡單地說,就是按列操作文本行)。用於演示的測試文件內容如下:[plain]Hello
World.
Apple
and
Nokia.
Hello
World.
I
wanna
buy
an
Apple
device.
The
Iphone
of
Apple
company.
Hello
World.
The
Iphone
of
Apple
company.
My
name
is
Friendfish.
Hello
World.
Apple
and
Nokia.
實現命令及過程如下:[plain]1、文本行去重
(1)排序
由於uniq命令只能對相鄰行進行去重復操作,所以在進行去重前,先要對文本行進行排序,使重復行集中到一起。
$
sort
test.txt
Apple
and
Nokia.
Apple
and
Nokia.
Hello
World.
Hello
World.
Hello
World.
Hello
World.
I
wanna
buy
an
Apple
device.
My
name
is
Friendfish.
The
Iphone
of
Apple
company.
The
Iphone
of
Apple
company.
(2)去掉相鄰的重復行
$
sort
test.txt
|
uniq
Apple
and
Nokia.
Hello
World.
I
wanna
buy
an
Apple
device.
My
name
is
Friendfish.
The
Iphone
of
Apple
company.
2、文本行去重並按重復次數排序
(1)首先,對文本行進行去重並統計重復次數(uniq命令加-c選項可以實現對重復次數進行統計。)。
$
sort
test.txt
|
uniq
-c
2
Apple
and
Nokia.
4
Hello
World.
1
I
wanna
buy
an
Apple
device.
1
My
name
is
Friendfish.
2
The
Iphone
of
Apple
company.
(2)對文本行按重復次數進行排序。
sort
-n可以識別每行開頭的數字,並按其大小對文本行進行排序。默認是按升序排列,如果想要按降序要加-r選項(sort
-rn)。
$
sort
test.txt
|
uniq
-c
|
sort
-rn
4
Hello
World.
2
The
Iphone
of
Apple
company.
2
Apple
and
Nokia.
1
My
name
is
Friendfish.
1
I
wanna
buy
an
Apple
device.
(3)每行前面的刪除重復次數。
cut命令可以按列操作文本行。可以看出前面的重復次數佔8個字元,因此,可以用命令cut
-c
9-
取出每行第9個及其以後的字元。
$
sort
test.txt
|
uniq
-c
|
sort
-rn
|
cut
-c
9-
Hello
World.
The
Iphone
of
Apple
company.
Apple
and
Nokia.
My
name
is
Friendfish.
I
wanna
buy
an
Apple
device.
下面附帶說一下cut命令的使用,用法如下:[plain]cut
-b
list
[-n]
[file
...]
cut
-c
list
[file
...]
cut
-f
list
[-d
delim][-s][file
...]
上面的-b、-c、-f分別表示位元組、字元、欄位(即byte、character、field);
list表示-b、-c、-f操作范圍,-n常常表示具體數字;
file表示的自然是要操作的文本文件的名稱;
delim(英文全寫:delimiter)表示分隔符,默認情況下為TAB;
-s表示不包括那些不含分隔符的行(這樣有利於去掉注釋和標題)
三種方式中,表示從指定的范圍中提取位元組(-b)、或字元(-c)、或欄位(-f)。
范圍的表示方法:
n
只有第n項
n-
從第n項一直到行尾
n-m
從第n項到第m項(包括m)
-m
從一行的開始到第m項(包括m)
-
從一行的開始到結束的所有項
在寫這篇文章的時候,用到了vim的大小寫轉化的快捷鍵:gu變小寫,gU變大寫。結合ctrl+v能夠將一片文字中的字元進行大小寫轉換,非常好用。
③ linux命令grep
grep搜索成功,則返回0,如果搜索不成功,則返回1,如果搜索的文件不存在,則返回2。
-n 列印行號
grep -n ".*" h.txt 所有列印行號
grep -n "root" h.txt 匹配的內容顯示行號
-v 不包括
-E 表示過濾 多個參數
grep -Ev "sshd|network|crond|sysstat|"
-o:僅列印你需要的東西,默認列印正行
grep -o "hello" h.txt
-i:忽略大小寫
grep -i "hello" h.txt
-c: 用於統計文中出現的次數
--color=auto 過濾欄位添加顏色
\b:作為邊界符,邊界只包含特定字元的行
grep "\boldboy\b" /etc/passwd -->只過濾包含oldboy的行
從多個文件中查找關鍵詞
grep "omc" /etc/passwd /etc/shadow
數據去重:cat log | sort | uniq
④ linux sort 命令整理
無論是工作中使用還是應付各種面試,linux sort 都是必須要掌握的 linux 基本命令之一。尤其是 linux sort -k 命令,經常會被搞暈,索性好好研究一下 sort 命令
語法:
選項:
參數就不一一介紹了,直接上例子,首先先看下原始的排序數據
cat sort.log
1、列印從哪列開始是亂序
sort -c sort.log; echo $?
sort -C sort.log; echo $?
其中,返回結果 1,表示文件不是已經排序好的文件
2、默認排序( 整行進行ASCII字元升序)
sort sort.log
3、高能來了,讓人迷糊的 k 語法,首先看下 k 的語法格式
這個語法格式可以被其中的逗號(」,」)分為兩大部分,Start部分和End部分
Start和End部分都由三部分組成,其中的Modifier部分就是類似n和r的選項部分,可省略
FStart、Fend,表示使用的域,而CStart則表示在FStart域中從第幾個字元開始算"排序首字元",同理,CEnd表示結尾的第幾個字元是排序末尾字元,.CStart、.CEnd是可以省略的,分別表示從本域的開頭部分開始、到本域的域尾結束,CEnd設定為0,也是表示結尾到域尾。口說無憑,上幾個例子吧
3.1 對第三列進行排序,如果不加n,按照 ASCII字元排序
sort -t $' ' -k 3 sort.log
3.2 加n後,按照數值排序
sort -t $' ' -k 3n sort.log
3.3 不指定 FEnd 時,多個 -k 從前往後排序可以,從後往前不行
從後往前,多個 -k,數據符合預期
sort -t $' ' -k 3n -k 1 sort.log
從後往前,多個 -k ,第三列相同時,按照第一列降序排列,數據符合預期
sort -t $' ' -k 3n -k 1r sort.log
更換成從前往後
sort -t $' ' -k 1 -k 3n sort.log
sort -t $' ' -k 1 -k 3nr sort.log
通過 sort -t $' ' -k 1 -k 3n sort.log 和 sort -t $' ' -k 1 -k 3nr sort.log 返回的結果發現,在第一列相等時,無論其三列是正序排列,還是逆序排列,結果都一樣,說明後邊的 -k 未生效
當指定 FEend 後
sort -t $' ' -k 1,1 -k 3nr sort.log
3.4 作用域
緊跟在欄位後的選項(如"-k3n"的"n"和"-k2nr"的"n","r")稱為私有選項,使用短橫線寫在欄位外的選項(如"-n"、"-r")為全局選項。當沒有為欄位分配私有選項時,該排序欄位將繼承全局選項,所有選項包括但不限於"bfnrhM"
除了"b"選項外,其餘選項無論是指定在FStart還是FEnd中都是等價的,對於"b"選項,指定在FStart則作用於FStart,指定在FEnd則作用於FEnd
sort -t $' ' -k1r,2 sort.log ,可以看出一、二列都是倒敘排列
3.5 注意
指定n選項按數值排序時, 由於"n"選項只能識別數字和負號"-",當排序時遇到無法識別字元時,將導致該key的排序立即結束,n選項絕對不會跨域進行比較
默認情況下,sort會進行一次 "最後的排序" ,按照默認規則對整行進行一次排序,這次排序稱為"最後的排序"
sort -t $' ' -k3n sort.log ,在第三列相等時,整行會按照 ASCII 進行最後的升序排列
sort -t $' ' -k3,4n -s sort.log ,加了 -s 後,不會進行最後的排序(1000相同時,e在b的前邊了),而是保留原排序
3.6 按照某個域中的第n個字元進行排序
sort -t $' ' -k2.3,2.3 sort.log ,按第二列第三個字元進行排序
4、 -h 使用易讀性數字(例如:2K、1G)
sort -t $' ' -k5h sort.log
sort -t $' ' -k2,2 sort.log|uniq
sort -t $' ' -k2,2 -u sort.log 會對第二列進行去重,而 sort -t $' ' -k2,2 sort.log|uniq 會對整行進行去重(當然uniq也可以按照第二列進行去重)
sort整理完了,歡迎大牛指教
⑤ linux去重命令
linux重啟命令是:
1、在命令行中輸入: shutdown -r now : 表示現在重啟計算機,按下回車便會進行重啟。
2、另一種重啟方式就是輸入: reboot 也表示重啟,一樣會進行重啟。
Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIX和Unix的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的Unix工具軟體、應用程序和網路協議。它支持32位和64位硬體。Linux繼承了Unix以網路為核心的設計思想,是一個性能穩定的多用戶網路操作系統。