【linux系統】命令學習(六)awk sed grep 與管道的使用
程式執行環境輸入與輸出
標準輸入0
read a;echo $a
標準輸出1
echo cesh
錯誤輸出
ls notr
管道重定向
管道與管道之間可以重定向
管道與檔案之間可以重定向
用於寫入
將錯誤的輸出存進去
管道連結
管道連線符 |
可以連結多個程式
管道連線是以紫禁城的方式啟動的
管道執行的上下文控制
使用{command;}注意花括號與內部命令之間的空格與分號
使用控制邏輯while read 組合
使用${}''
grep awk sed 學習
grep 基於正則表示式查詢滿足條件的行
awk 根據定位到的資料行處理其中的分段
sed 根據定位到的資料行修改資料
與sql對比
grep 資料查詢定位 select * from table like "%yyyy"
awk 資料切片 select field from table
sed 資料修改 update table set filed = new where hhhhh
平臺實現差異
不同的系統使用命令會有些不同
https://www.gnu.org/software/sed/manual/sed.html
https://www.gnu.org/software/grep/manual/grep.html
https://www.gnu.org/software/gawk/manual/gawk.html
BRE基本正則表示式
^開頭 $結尾
[a-z][0-9]區間,如果開頭帶有^表示不能匹配區間內的元素
*0個或多個
.表示任意字元
ERE擴充套件正則表示式
基本正則表示式基礎上的擴充套件
?非貪婪匹配
+一個或者多個
()分組
{}範圍約束
| 匹配多個表示式的任何一個
bash 程式設計語法
變數
命名 英文字母、下劃線、數字,收個字元不能以數字開頭
中間不能有空格,可以使 用下劃線(_)
不能使用標點符號
不能使用bash裡面的關鍵字(可以用help命令檢視保留關鍵字)
定義與使用變數
your_name="Linda“
只讀變數
a="123"
readonly a
刪除變數
unset variable_name (不能刪除只讀變數)
變數型別
字串:“12222”
拼接字串:name = "hello, "$bianliang"!"
陣列 arrayname = (value0 value1 value3)
取陣列 valuen = ${arrayname[n]}
單獨賦值 arrayname[0]=value0
控制語句【空格非常重要】
條件分支:if
if condition
then
command1
command2
commanf
fi
if [3==3];when echo "true";else echo "false";fi
if [[3>3]];when echo "true";else echo "false";fi
-gt 大於號 -lt小於號 -eq 相等
for 迴圈
for var in item1 item2 item 3
do
command1
command2
done
for i in $(uuu.txt) ; do echo $(i);done
while迴圈
while condition
do
command
done
while read line; do echo $line;done < tuii.txt (表示從tuii.txt檔案去讀取)
bash指令碼編寫
read
從終端或者檔案中讀取輸入的內部命令
讀取整合輸入
每行末尾的換行符不被讀入
read var
read var0 var1
read
指令碼引數傳遞
$0指令碼名稱
$1-$n 獲取指令碼引數
$# 傳遞到指令碼的引數個數
$$ 指令碼執行的當前程序號
$*以一個單字串顯示所有向指令碼傳遞的引數
$?是顯示最後命令的退出狀態,0表示沒有錯誤,其他任何值表明有錯誤
基本運算
算術運算
+加法 -減法 \*乘法 /除法 %取餘 =賦值 ==相等 !=不相等 -eq相等 -ne不相等 -gt大於 -lt小於 -ge大於等於 -le 小於等於
語法:‘expr $a + $b’
bash與linux命令集合
#!/bin/bash
echo $1,$2,$3
echo "檔名 "$0
echo "引數變數 "$#
echo "return "$?