if條件語句sed命令

zfx1997發表於2017-10-24

if語句分為三種:
1、單分支結構
if [條件]
then
命令
fi
2.雙分支
3、多分支
練習1:
編寫shell指令碼,當系統記憶體小於一百時,進行郵件警報,並且每隔三分鐘檢驗一次。
free -m 用來檢視系統的記憶體

#!/bin/bash

mem=`free -m | grep buffers/|awk -F " " '{print $4}'`
        ##系統剩餘記憶體
if [[ mem > 100 ]]
    then
        echo "the buffers are $mem"
else
    echo "warning" |mail -s "jingbao" 917785844@qq.com
        ##當系統剩餘記憶體小於100時,傳送標題為jingbao的郵件

之後執行crontab

*/3 * * * * /bin/bash /root/panduan.sh >/dev/null

sed命令
sed實際上並不修改現有檔案。與 grep 一樣 , sed 通常在管道中使用
-n :使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN 的資料一般都會被列出到終端上。但如果加上 -n 引數後,則只有經過sed 特殊處理的那一行(或者動作)才會被列出來。
-e :直接在命令列模式上進行 sed 的動作編輯;
-f :直接將 sed 的動作寫在一個檔案內, -f filename 則可以執行 filename 內的 sed 動作;
-r :sed 的動作支援的是延伸型正規表示法的語法。(預設是基礎正規表示法語法)
-i :直接修改讀取的檔案內容,而不是輸出到終端。

function:
a :新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)~
c :取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行!
d :刪除,因為是刪除啊,所以 d 後面通常不接任何咚咚;
i :插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行);
p :列印,亦即將某個選擇的資料印出。通常 p 會與引數 sed -n 一起執行~
s :取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配正規表示法!例如 1,20s/old/new/g 就是啦!
EX:
1.以行為單位的新增/刪除
刪除passwd中的第10到15行

[root@foundation62 test]# nl passwd | sed  '10,15d'
                    ##nl表示顯示行號

2.在第二行後(亦即是加在第三行)加上『drink tea?』字樣!

[root@desk test]# cat passwd | sed -e '3i/drink tea?/'

[root@desk test]# cat passwd | sed -e '2a/drink tea?/'
        ##i表示在3的上一行新增,a表示在2的下一行新增

資料的搜尋並替換

除了整行的處理模式之外, sed 還可以用行為單位進行部分資料的搜尋並取代。基本上 sed 的搜尋與替代的與 vi 相當的類似!他有點像這樣:

sed 's/要被取代的字串/新的字串/g'

過濾掉字母后的長度等於num本身的長度,則這個num為純數字

利用expr 命令的返回值不同,可以得到不同的判斷結果

相關文章