Linux命令總結

linux三劍客awk、grep、sed應用環境即常用命令

linux常用命令鏈接

https://man.linuxde.net/dos2unix

https://man.linuxde.net/命令

https://man.linuxde.net/awk

文本處理

  • awk

    cat name.txt|awk '{print $1,$NR,$0}' 讀取name.txt 輸出第一列$1,最后一列$NR,和整行$0

分列輸出文件無需循環,分列精品。

awk -F , 'NR!=1{print $2 >$1".txt"}' geneinfo.csv 指定 ,為分隔符,逐行輸出第二列的內容到對應的第1列的
文件名的txt文件。

awk使用shell中的變量

awk中的變量不需要使用$符號。使用$符號則表示的是第n列。

num=100
awk -v num=$num 'BEGIN{print num/0.5}'

awk向shell中傳遞變量

eval $(awk 'BEGIN{print "var1='str1';var2='str2'"}')
#           $()等價于``
eval `awk 'BEGIN{print "var1='str1';var2='str2'"}'`

awk 獲取指定列(此處是第三列到最后一列)分隔符為一個空格

awk -F " " '{for(i=3;i<=NF;i++) {printf $i" "} printf "\n"}' file

awk獲取指定列(此處是第三列到最后一列)分割符為tab

awk '{$1="";$2="";print $0}' file |sed 's/\t\t//g'

cat name| grep zhan 查找name文件里含有zhan的行
grep -v "node" filename 查找filename里不包含node的行

  • sed

    sed -n '1,10p' name.txt 獲取1-10行的內容

  • cut
    cut -f 4-10 test.txt#獲取text.txt的第4-10列。

cut參數說明

-b 表示字節;
-c 表示字符;
-f 表示定義字段。

指定分隔符號使用-d 符號
N-:從第N個字節、字符、字段到結尾;
N-M:從第N個字節、字符、字段到第M個(包括M在內)字節、字符、字段;
-M:從第1個字節、字符、字段到第M個(包括M在內)字節、字符、字段。
例:
cut -f 5- -d "," test.csv 查看test.csv文件的第5列到最后一列,指定的分隔符號是,
cut -c 1-4 test_Dsuite.txt 查看文件的第1到第4個字符。

  • column
    column -t 文件按照table格式查看,配合head可以更加清楚的閱讀文件的前幾行。
    column -t test_Dsuite.txt|head -5 查看tab分割文件的前5行,以table格式查看。

文件處理

  • find 查找文件

    find ./ -name "*.txt" 查找當前目錄下所有的txt結尾的文件,包括子目錄里的文件。

  • rename 批量重命名(此處的rename是perl版本的)

    rename有C語言版本和perl版本,以下命令均是perl版本的命令。

    使用命令man rename如果返回的窗口首行有perl`則是perl版本,否則即是C語言版本。

    ubuntu安裝perl版本的rename

    sudo apt update
    sudo apt-get install rename
    

rename參數講解: s表示使用正則, 第1-2個/之間是要匹配的內容,$表示文件結尾。第2個/之后是要替換成的內容,最后跟上要操作的文件 *表示所有文件。注意:perl中''""不等價,此處應該使用的是單引號''

  • 字符替換

    rename 's/AA/aa' *.fa 把所有.fa文件名中的AA替換成aa

  • 修改文件后綴

    rename 's/\.html/\.php' * 把.html文件改為.php文件

    rename 's//$/.txt' *把所有文件名末尾添加.txt

    rename 's/^/admin' * 所有文件開頭添加字符admin

    rename 'y/A-Z/a-z/' * 修改文件名大寫字符為小寫

    rename 's/[]+//g' * 去掉文件名中的空格

    rename 's/\.bak$//' *.bak 所有的.bak后綴名的文件全部刪除后綴名

  • 正則匹配修改文件名

    • rename 's/(/d)/第$1章/' * 修改為第1章,第2章

方法1:把文件名拆分處理,可以任意修改文件名

find -name '*.log' -printf %f//n|awk -F'.' '{print $1}'|xargs -i{} mv {}.log xiyun_{}.log

方法2:利用rename

一般的linux下的rename命令比較簡單

rename 'test' 'xiyun' '*.log'

把文件名中的某部分字符串替換掉

ubuntu下的rename命令支持正則表達式,因此功能更強大。

方法3:直接利用find和xargs和mv,中間不用awk,這樣只能添加后綴名,不能修改文件名。

  • ln 建立超鏈接

    ln 遠端文件 新文件 新文件即生成的遠端文件的硬鏈接

    ln -s /disk/readme ./read 生成軟鏈接,實際是在當前目錄生成名為read的超鏈接,鏈接到disk/readme ,訪問read,即相當于訪問readme

  • dos2unix 轉換windows文件為Unix格式

    dos2unix test.py把test.py轉換成Unix格式

    dos2unix -n test.py u-test.py把test.py轉換成unix的新文件u-test.py

    dos2unix -o test.py直接修改原始文件格式為unix

    dos2unix file1 file2 file3 同時修改多個文件的格式為unix

  • unix2dos 轉換Unix格式為windows

    unix和windows 的文件格式中換行符的格式不一致,一定要注意轉換換行符。否則會報錯。

    unix和windows的文件系統也不一致,windows的Fat32(不支持單個文件大于4G),NTFS(目前常用的文件系統格式),linux是Ext2格式。如果要在兩種系統格式之間傳輸文件,NTFS的硬盤在linux上不會被識別,最后使用第三方軟件識別。

  • md5sum MD5值生成核對

    md5sum test生成test文件的md5值。

    md5sum -c testsum test 核對test的文件和testsum文件中的MD5值是否一致。

  • 排序參考
    sort test.txt排序
    sort命令的字段
    -n按照數字進行排序 -d 按照字典順序排序
    -r 逆序排序
    -k N指定按第N列排序
    sort -nrk 1 data.txt
    sort -bd data//忽略空格之類的前導空白符
    sort info.csv|uniq 反向排序
    sort test.txt | uniq消除重復行
    sort test.txt | uniq -c 統計重復行出現的次數
    sort test.txt | uniq -d找出重復行
    指定每行中需要比較的重復內容 -s 開始位置 -w 比較字符數

  • 進程管理(殺死進程參考)
    ps 查看后臺進程(僅限當前終端用戶的后臺進程)

    image.png

    ps命令輸出的第一列即為PID.
    ps -ef查看所有用戶進程
    kill -s 9 3645522 殺掉PID為3645522的進程,此處是殺掉md5sum的進程。
    pkill -9 md5sum 強力刪除程序名為md5sum的進程。

kill -s 9 `pgrep vim `  #使用pgrep和kill來刪除名字為vim的進程。

-進程檢測
ps -x |grep fastp|grep -v "grep"|wc -l 統計當前用戶的所有運行進程中,名字為fastp的進程數量

  • 文件名字符的處理
    cut參考
    expr參考
    name是一個文件夾,里面有zao_L2_384384.R1.fastq.gz之類文本。
    cut -f1 -d "." name 指定分割符號.分割,獲取第一列的字符
    cut -f1 -d "." --complement name 指定分割符號.分割,刪除第1列后的字符
    expr substr zao_L2_384384.R1.fastq.gz 1 3 獲取字符串的指定字符,第1-3個字符。
    -xargs
    ls *.gz|grep F2-3|xargs -i mv {} ./F2-3/查找當前目錄中所有的gz文件,從中找到含有F2-3的,全部移動到當前目錄中F2-3文件夾中。

進程監控腳本

#!/bin/bash
line=`ps x|grep processname|grep -v "grep"|wc -l`
while [ $line -gt 0 ]
do
    echo "no~"
    sleep 30
    line=`ps aux|grep processname|grep -v "grep"|wc -l`
done
echo "yes!"
image.png

磁盤空間查看

df -lh 查看整個服務器的磁盤分區使用情況
du -lh 查看當前目錄的磁盤使用情況

查看服務器運行狀態

top 所有信息
top -u username 指定用戶的運行信息
ps -ef所有進程信息
ps -x 當前用戶的進程

文件查看工具

head filename 查看前幾行,

  • head -10 readme 查看readme文件的前10行
    tail filename
  • tail -8 errinfo 查看errinfo文件的后8行
    more filename 滾動方式查看文件,空格或enter鍵,往下繼續閱讀。不能上翻
    less filename 滾動方式查看文件,pgdn向下翻頁,pgup向上翻頁。
    vim readme 使用vim編輯readme文件。

文件傳輸

常用的文件傳輸類型有:win-linux和linux-linux
mac沒用過不清楚。

  • windows傳輸到linux,我一般使用 winSCP這個軟件下載地址。各大軟件商店都有這款軟件。
  • linux到linux傳輸,使用命令scp.參考文章
    例如有如下兩個主機:172.28.218.254(本地)172.28.210.9(遠程)
    傳輸文件
    在本地主機(172.28.218.254)運行如下命令:
    說明:chaim是我在遠程主機上的用戶名
    • 獲取遠程目錄maize
      scp -r chaim@172.28.210.9:/disk/maize/ ./maize/
      /disk/maize/ 這是遠端服務器的文件地址 ./maize/這是存儲到本地服務器的地址
    • 獲取遠程文件readme
      scp chaim@172.28.210.9:/home/info/readme ./Readme
      +將本地文件上傳到遠程
      scp /public/disk.info chaim@172.28.210.9:/home/info/disk.info
      +將本地文件夾上傳到遠程
      scp -r /public/maize/ chaim@172.28.210.9:/disks/backup/maize/
  • 指定端口2235傳輸本地bam到遠程主機172.28.210.9
    scp -P 2235 sam1.bam chaim@172.28.210.9:/disks/backup/maize/
在經歷了scp傳輸中斷,多個大文件需要重新傳輸的痛苦后,決定使用支持斷點續傳的rsync

rsync 傳輸時,在另一端主機上會生成臨時的隱藏文件,通過ls -la可以查看到。等待傳輸完成或中斷時會顯示出正常的文件名。
上傳數據到遠程服務器
rsync -P --rsh=ssh readme.md tang@172.28.218.254:~/chaim/

指定端口2222,傳輸bam文件到遠程主機21.28.170.146

rsync -P -e 'ssh -p 2222' sample.bam chaim@21.28.170.146:/share/home/bam

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,546評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,570評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,505評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,017評論 1 313
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,786評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,219評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,287評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,438評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,971評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,796評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,995評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,540評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,230評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,918評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,697評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內容