前面已經介紹過shell指令碼的基本的使用的方法,在這篇中我將介紹三個字元擷取命令cut和awk以及sed命令。
1 cut命令
cut [選項] 檔名
選項:-f 列號: 提取第幾列 (列號之間用,分開,列號之間是用製表符分開)
-d 分隔符: 按照指定分隔符分割列("分隔符")
cut命令與grep命令經常聯合使用
cut命令預設是以tab製表符為分隔符的
2 awk命令
awk '條件1 條件2 ......' 檔名
條件:一般使用關係表示式作為條件
x > 10 判斷變數x是否大於10
x >= 10 大於等於10
x <= 10 小於等於10
動作:格式化輸出
流程控制語句
eg:檢視根目錄是否超過%80
df -h | grep sdb5 | awk '' | cut -d "%" -f 1
得到根目錄的使用量
除了這裡的用法外,awk還有其它的一些用法:
fs內建變數(使用awk命令時,指定的分隔符)
cat /etc/passwd | grep "/bin/bash" | awk ' begin '
awk 'end ' 檔名
begin和end命令
begin 是在所有命令執行之前執行的命令
end 是在所有命令執行之後執行的命令
awk命令還支援關係運算子。
3 sed命令
sed是一種幾乎包括在所有unix平台(包括linux)的輕量級流編輯器。sed主要是用來將資料進行選取,替換,新增的命令。
sed [選項] '[動作]' 檔名
選項:-n 一般sed命令會把所有資料都輸出螢幕,如果加入此選擇,則只會把經過sed命令處理的行輸出的結果
-e 允許對輸入資料應用多條sed命令編輯(命令之間用;隔開)
-i 用sed的修改結果直接修改讀取資料的檔案,而不是由螢幕輸出(可以修改檔案)
動作:a\ 追加,在當前行後新增一行或多行,新增多行時,除最後一行外,每行末尾需要用"\"代表資料未完結
c\ 行替換,用c後面字串替換原資料行,替換多行時,除最後一行外,每行末尾用"\"代表資料未完結
i\ 插入,在當期行前插入一行或多行。插入多行時,除最後一行外,每行末尾需要用"\"代表資料未完結
d 刪除,刪除指定的行
p 列印,輸出指定的行
s 字串替換,用乙個字串替換另外乙個字串。格式為"行範圍s/舊字串/新字串/g" (和vim中的替換格式類似)
sed -n '2p' 檔名 只列印檔案中的第二行
sed '2a hello' 檔名 在第二行後追加
4 排序命令
sort [選項] 檔名
選項:-f---->忽略大小寫
-n---->以數值型進行排序,預設使用字串排序
-r---->反向排序
-t---->指定分隔符,預設分隔符是製表符
-k n,m---->按照指定的字段範圍排序,從第n欄位開始,m欄位結束(預設到行尾)
再次總結:
最後,我想說的是:
如果有問題,大家可以一起交流和學習。
Shell指令碼學習(2)
在執行shell指令碼時,向shell指令碼傳遞引數,獲取引數的格式為 n。其中n表示乙個數字,作為執行指令碼的第n個引數,且n 0。1 bin bash 2 echo shell 傳遞引數例項!3 echo 執行的檔名 0 4 echo 第乙個引數為 1 5 echo 第二個引數為 2 6 ech...
shell指令碼學習 功能語句 2
學習常用功能語句 read expr test read可讀入並傳遞給變數 expr可用於算數運算 test可用於整數 字元 檔案比較,感覺可用於條件判斷。功能 讀入輸入的引數賦值給變數 a 單個輸入 格式 read paramb 多個輸入 多個輸入格式 read param0 param1 par...
shell 指令碼學習
case var in pattern statement esac case 的指令碼語法是雙分號結尾的。sed e s i.86 i386 查詢替換。sed 流編輯器 將輸入流中的i.86替換成i386。是個萬用字元。輸入流的形式可能是 管道,檔案。shell d mkdir p 指令碼的條件執...