測試開發基本技能(-)shell(2)

Shell 輸入輸出

Read 用來讀取輸入,並賦值給變量

echo ,printf可以簡單輸出變量。

> file 將輸出重定向到另一個文件

>> 表示追加等價於tee -a

< file 輸入重定向

| 表示管道,也就是前一個命令的輸出傳入下一個命令的輸入

文件描述符

輸入文件—標準輸入0

輸出文件—標準輸出1

錯誤輸出文件—標準錯誤2

使用 2>&1 >/tmp/tmp < /tmp/tmp

測試開發基本技能(-)shell(2)

管道

把不同程序的輸入和輸出連接

可以連接更多命令

常見的組合命令Linux三劍客

echo hello world | read x; echo $x

echo hello world | while read x;do echo $x;done


測試開發基本技能(-)shell(2)

grep

基於正則表達式查找滿足條件的行

數據查找定位

grep pattern file

grep -i pattern file 忽略大小寫

grep -v pattern file 不顯示匹配的行

grep -o pattern file 把每個匹配的內容用獨立的行顯示

grep -E pattern file 使用擴展正則表達式

grep -A-B -C pattern file 打印命中數據的上下文

grep pattern -r dir/ 遞歸搜索

pattern正則表達式

基本表達式(BRE)

^ 開頭 $結尾

[a-z] [0-9] 區間

* 0個或多個

基本正則(BRE)與擴展正則的區別(ERE)

? ?貪婪匹配

+ ?個或者多個

() 分組

{} 範圍約束

| 匹配多個表達式的任何一個

curl https://testerhome.com | grep -o 'http://[a-zA-Z0-9\\.\\-]*'

awk

根據定位到的數據行處理其中的分段

awk 'pattern{action}'

awk 'BEGIN{}END{}' 開始和結束

awk '/Running/' 正則匹配

awk '/aa/,/bb/' 區間選擇

awk '$2~/xxx/' 字段匹配

awk 'NR==2' 取第二行

awk 'NR>1' 去掉第一行

awk內置變量

FS 字段分隔符

OFS 輸出數據的字段分隔符

RS 記錄分隔符

ORS 輸出字段的行分隔符

NF 字段數

NR 記錄數

awk的字段數據處理

-F 參數指定字段分隔符

BEGIN{FS="_"} 也可以表示分隔符

$0代表當前的記錄

$1代表第一個字段

$N 代表第N個字段

$NF 代表最後一個字段

把單行分拆為多行

echo $PATH | awk 'BEGIN{RS=":"}{print $0}'

echo $PATH | awk 'BEGIN{RS=":"}{print NR,$0}'

echo $PATH | awk 'BEGIN{RS=":"}END{print NR}'

多行組合為單行

echo $PATH | awk 'BEGIN{RS=":"}{print $0}' | awk

'BEGIN{FS="\\n";ORS=":"}{print $0}'

sed

sed [addr]X[options]

-e 表達式

sed -n '2p' 打印第二行

sed 's#hello#world#' 修改

-i 直接修改源?件

-E 擴展表達式

--debug 調試

echo $PATH | awk 'BEGIN{RS=":"}{print $0}' | sed 's#/

#----#g'

echo $PATH | awk 'BEGIN{RS=":"}{print $0}' | sed -n '/

^\\/bin/,/sbin/p'

sed -i '.bak' -e '' -e ''


分享到:


相關文章: