linux Shell學習筆記第一天_其它

來源:互聯網
上載者:User

以下是Shell學習1-2天學習筆記

————————-我是分隔字元—————————

硬體去執行, 核心與硬體之間進行操作。

命令解析器。

shell指令碼的組成元素


  1. 系統命令
  2. 文本處理工具(sort、grep、sed、awk…)
  3. 變數
  4. 條件判斷
  5. 環循結構
  6. 函數

    Shell Scripts Center(SSC)

———————————————————————————-

非負Grep / awk

幾天。 統計Wc

Sort 排序 sort|head / sed
欄位處理 awk

資料區域判斷 awk |wc

顯示文本: echo [選項] 文本

        -n 不要自動換行

        -e 解析轉義符

            a 發出警告音

            c 最後不加上分行符號號

            f 換行

            r 斷行符號

彩色文本


Echo –e “33[40;35m….]”

echo “Hello,world”


echo –e “33[40;35mHell,world33[0m"



sort [選項]輸入檔案

    -o 輸出檔案

    -d 按字典順序排序 a-z

    -n 按數字大小輸出 0-9

    -r 逆序輸出 z-a 9-0

    -k 指定分類是域上的數字分類

    -t 域分割符;用非空格或tab鍵分割域


more /etc/passwd 分頁顯示

sort –d /etc/passwd|more 中間的|是反倒符號。 將前面處理的交給後面處理     先排序。後分頁顯示


sort –k3 –n –r –t: /etc/passwd|more


從大到小

wc [參數] [檔案名稱]

    -c 統計字元數量

    -l統計行數

    -w 統計單詞數量 空格區分


diff [選項] 檔案/目錄 檔案/目錄

diff /etc/passwd /etc/passwd.bak

    -q 僅顯示有無差異,不顯示詳細的資訊

    -c 顯示全部內文,並標出不同之處。

    -b 不檢查空白字元的不同

    -B 不檢查空白行

    -r 比較子目錄中的檔案。

grep 搜尋匹配 支援Regex


grep

    -c 只列印匹配模式的行編號記數

    -I 在匹配文本時忽略大小寫

    -n 在每行前顯示其行編號

    -v 逆向輸出,列印不匹配的行

    -f file 要匹配的字串列表在filezhong

grep ‘[Tt]his' file1.txt 設定大小寫

grep ‘^[^#]‘ file2.txt 不匹配行首


grep “s…n” file3.txt 匹配任一字元


sed 行編輯命令
    s 替代

    i 插入

    a 附加

    d    刪除全部匹配的行

    D    刪除最初相符的行

sed可以做什麼(”行”為基礎)

    刪除

    改變

    添加

    插入

    替換

樣本

sed –n '1,4p' /etc/passwd p是列印 -n 不顯示原檔案 列印1-4行

sed ‘/80/D' file.txt 首次出現80的行進行刪除

sed ‘s/var/usr/g' file.txt 將所有的var替換成usr g代表所有

sed '50,$s/help/man/g' file.txt 替換從50行到最後一行的help替換為man 前49不管

awk 可以處理列,也可以處理行,可以定位到第幾行,第幾列

awk [選項] ‘awk指令碼' 輸入檔案

    -F fs 使用fs作為輸入記錄的欄位分隔符號 = sort –t

    -f filename 從檔案filename讀取awk_script(awk指令碼)

    -v var=value 為awk_script 設定變數

awk的內建變數

變數 功能 預設
FS =大寫F 輸入欄位分隔符號 空格或tab
RS 輸入記錄分隔字元 換行
OFS =out FS 輸出欄位分隔符號 空格或tab
ORS 輸出記錄分隔字元 換行
NF 常用 目前記錄非空欄位的編號  
NR 常用 從所有檔案讀入的記錄號  

 

樣本

awk –F : ‘{print NR,$1,$2}' /etc/passwd


awk –F : ‘{print NR,$1,$NF}' /etc/passwd $NF 提取最後一行

awk –F : ‘NR%10==5{PRINT nr,$0}' /etc/passwd NR= 當前處理的行數 除10求餘=5列印當前的行數,進行輸出 $0 整行輸出,比如5、15、25 列印出來

awk –F : ‘NR==8,NR==13 {print NR,$0}' /etc/passwd 指定8行和13行。

awk工作原理(工具)


$NF $NR $1 第一列 $2 第二列 $0 一整行

實際測試

awk –F: ‘{print $1,$3}'/etc/passwd


awk –F: ‘{print $1,$NF}'/etc/passwd


awk –F: ‘{print NR,$1,$NF}'/etc/passwd NR行號


awk –F: ‘NR==5,NR==8{print NR,$1,$NF}'/etc/passwd 指定5-8行


awk –F: ‘NR%10==5{print NR,$1,$NF}'/etc/passwd 除10求餘


課程樣本測試

1、grep –v “-” file.txt 去除所有帶負號的資料 -v顯示沒有的 沒有的話則顯示只有-的

2、wc -l file.txt顯示所有行數 grep –v “-” file.txt |wc –l 統計所有沒有負數的

3、sort –n –r –k4 file.txt |sed –n '1p' 排序第四列 沒有分隔字元(即空格),-n數字 –r 從大到小 sed管道 顯示第一行 sed –n不顯示原檔案

    sort –n –r –k4 file.txt |head -1 讀取第一個資料 head 第一行

4、awk ‘{if($NF>3){print $0}}' file.txt NF 最後一列大於3 則列印一整行

5、awk ‘{if($4>0,&&$4<15){print $0}}' file.txt 列出第四列 大於0小於15 輸出整行

    awk ‘{if($4>0,&&$4<15){print $0}}' file.txt |wc –l 顯示行數

練習:


  1. grep和awk

    awk ‘{if($1>200801011){[print $0}}'file.txt

2、

處理命令回顧:

統計文本                wc

文本排序                sort

文本/目錄對比            diff

在檔案中尋找關鍵行        grep / sed

在行文本中添、刪、改    sed

在列文本中顯示指定列    awk

在列文本中進行計算        awk

在列文本進行條件選擇    awk

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.