shell學習之路:shell基礎大全2

來源:互聯網
上載者:User

標籤:

原文:http://note.youdao.com/share/?id=cd2ad6e6d5db2b347f92958efc2bdbc1&type=note

Regex與萬用字元:

一、介紹:1.Regex用來在檔案中匹配合格字串,正則是包含匹配。grep、awk、sed等命令可以支援Regex2.萬用字元用來匹配合格檔案名稱,萬用字元是完全符合,ls、find、cp這些命令不支援Regex,所以只能用使用shell自己的萬用字元來進行匹配了。二、基礎Regex:grep "下列" demo.txt".*":匹配任一字元任意次"^$":匹配空行"a*":匹配a零次或多次,所以可以配所有內容"^a":匹配以a開頭的行"aa*"匹配兩個連續的a的行
元字元 作用
* 前一個字元匹配零次或任意多次
. 匹配除了分行符號以外任意一個字元
^ 匹配行首,例如:^hello會匹配hello開頭的行。
$ 匹配行尾,例如:hello$會匹配以hello結尾的行。
[] 匹配中括弧中指定的任意一個字元,只匹配一個字元。
例如:[aoeiu]匹配任意一個母音字母;[0-9]匹配任意一個數字[a-z][0-9]匹配小寫字母和一位元字構成的兩個字元的字串
[^] 匹配除中括弧的字元以外的任意一個字元,例如:[^0-9]匹配任意一位非數位字元;[^a-z]表示匹配任意一位非小寫字母的字元
\ 轉移符。用於取消對特殊符號的含義
\{n\} 表示其前面的字元敲好出現n次,例如:[0-9]\{4\}匹配4位元字;[1][3-8][0-9]\{9\}匹配手機號碼(第一位必須以1開頭第二位必須是3和8之間的第三位以後是1到9中的數字匹配9次)
\{n,m\} 表示其前面的字元至少出現n次,最多出現m次。例如:[a-z]\{6,8\}匹配小寫字母6到8次(位)
字元截取:    cut欄位提取命令        介紹: 缺點是無法以空格作為分隔字元的應用  [[email protected]]#cut[選項] 檔案名稱    選項:    -f列號:    提取第幾列    -d分隔字元:    按照指定分隔字元馮列    我想提取系統中除root以外的能夠登入系統的使用者:[[email protected] demo]# cat /etc/passwd | grep /bin/bash | grep -v root | cut -d ":" -f 1
fengtaotao    printf命令(格式化輸出命令)    介紹:    [[email protected]]#printf ‘輸出類型輸出格式‘ 輸出內容    輸出類型:
    %ns:    輸出字串,n是數字指代輸出幾個字元
    %ni:    輸出整數。n是數字指代輸出幾個數字    %m.nf:    輸出浮點數,m和n是數字,指代輸出的整數位元和小數位元。如%8.2f表示輸出8位元其中有兩位小數,6位整數。    輸出格式:
\a 輸出警告聲音
\b 輸出退格鍵,也就是backspace鍵
\f 清楚螢幕
\n 換行
\r 斷行符號,也就是Enter鍵
\t 水平輸出退格鍵,也就是Tab鍵
\v 垂直輸出退格鍵,也就是Tab鍵

例如:

[[email protected]]# printf "%s\t %s\t %s\t %s\t %s\t %s\n" $(cat student.txt) 這樣才能正確的輸出格式


     awk命令:       介紹:     [[email protected]]#awk ‘條件1{動作1} 條件2{動作2}...‘ 檔案名稱        條件(Pattern)        一般使用關聯運算式作為條件        x>10    判斷變數x是否大於10        x>=10    大於等於        x<=10    小於等於        動作(Action)        格式化輸出        流程式控制制語句    執行個體:     [[email protected]]# awk ‘{printf $2 "\t" $6"\n" }‘ student.txt     上述命令是:直接動作 將student.txt的$2第二列 格式\t為tab 與 第6列 +\n換行的輸出格式出來           BEGIN條件  FS內建變數 修改分隔字元END:在所有內容 執行完後在執行一條END中的動作所有資料 處理完成後會在列印一條aaaaaa資料  sed命令:    介紹:sed是一種幾乎包括在所有unix平台(包括Linux)的輕量級流編輯器。sed主要是用來將資料進行選取、替換、刪除、新增的命令。    [[email protected]]#sed [選項]‘[動作]‘檔案名稱        選項:        -n:    一般sed命令會把所有資料都輸出到螢幕,如果加入此選擇,則只會把經過sed命令處理的行輸出到螢幕。(只顯示動作內容)        -e:    允許對輸入資料應用多條sed命令編輯        -i:    用sed的修改結果直接修改讀取資料的檔案,而不是由螢幕輸出(寫入)    動作:
a\ 追加,在當前行後添加一行或多行。添加多行時,除最後一行外,每行末尾需要用"\"代表資料末完結。
c\ 行替換,用c後面的字串替換原資料行,替換多行時,除最後一行外,每行末尾需用"\"代表資料未完結。
i\ 插入,在當前行插入一行或多行。插入多行時,出最後一行外,每行末尾需要用"\"代表資料未完結
d 刪除,刪除指定行
p 列印print 輸出指定的行
s 字元替換,用一個字串替換另外一個字串。格式為"行範圍s/舊字串/新字串/g" (和vim中的替換格式類似)。
樣本:1樣本:2樣本3  字元處理命令:1.排序命令sort [[email protected]]#sort[選項] 檔案名稱選項:-f:    忽略大小寫-n:    以數值型進行排序,預設使用字串型排序-r:    反向排序-t:    指定分隔字元,預設是分隔字元是定位字元-k n[,m]:    按照指定的欄位範圍排序。從第n欄位開始,m欄位結束(預設到行尾) [[email protected]]# sort /etc/passwd    排序使用者資訊檔[[email protected]]#sort -r /etc/passwd 倒序以字母倒序
統計命令wc:[[email protected]~]#wc[選項] 檔案名稱選項:-1:    只統計行-w:    只統計單詞-m:    只統計字元[[email protected]]#wc /etc/passwod[[email protected]]#wc -l /etc/passwod[[email protected]]#wc -lm /etc/passwod條件判斷:兩種判斷格式:[[email protected]~]#test -e /root/install.log[[email protected]~]#[ -e /root/install.log ]例如: echo $?來判斷上一個命令是否正確執行,正確返回0否則返回對應的數字例如2:[[email protected]]# [ -d /root ]&& echo ‘yes‘ || echo "no"  yes[[email protected]]# [ -f /root/install.log ] && echo ‘yes‘ || echo ‘no‘yes如果[]中的判斷成立那麼輸出yes否者輸出no 用邏輯與和邏輯或1.按照檔案類型進行判斷: 2.按照檔案許可權進行判斷3.兩個檔案之間進行比較例如: 4.兩個整數之間比較5字串的判斷 6;多從條件判斷 

shell學習之路:shell基礎大全2

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.