特殊字符用來處理引數
$# 傳遞到腳本的引數個數
$* 以一個單字串顯示所有向腳本傳遞的引數,
如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有引數,
$$ 腳本運行的當前行程ID號
$! 后臺運行的最后一個行程的ID號
$@ 與$*相同,但是使用時加引號,并在引號中回傳每個引數,
如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有引數,
$- 顯示Shell使用的當前選項,與set命令功能相同,
$? 顯示最后命令的退出狀態,0表示沒有錯誤,其他任何值表明有錯誤,
關系運算子
-eq 檢測兩個數是否相等,相等回傳 true, [ $a -eq $b ] 回傳 false,
-ne 檢測兩個數是否不相等,不相等回傳 true, [ $a -ne $b ] 回傳 true,
-gt 檢測左邊的數是否大于右邊的,如果是,則回傳 true, [ $a -gt $b ] 回傳 false,
-lt 檢測左邊的數是否小于右邊的,如果是,則回傳 true, [ $a -lt $b ] 回傳 true,
-ge 檢測左邊的數是否大于等于右邊的,如果是,則回傳 true, [ $a -ge $b ] 回傳 false,
-le 檢測左邊的數是否小于等于右邊的,如果是,則回傳 true, [ $a -le $b ] 回傳 true,
檔案測驗符
-b file 檢測檔案是否是塊設備檔案,如果是,則回傳 true, [ -b $file ] 回傳 false,
-c file 檢測檔案是否是字符設備檔案,如果是,則回傳 true, [ -c $file ] 回傳 false,
-d file 檢測檔案是否是目錄,如果是,則回傳 true, [ -d $file ] 回傳 false,
-f file 檢測檔案是否是普通檔案(既不是目錄,也不是設備檔案),如果是,則回傳 true, [ -f $file ] 回傳 true,
-g file 檢測檔案是否設定了 SGID 位,如果是,則回傳 true, [ -g $file ] 回傳 false,
-k file 檢測檔案是否設定了粘著位(Sticky Bit),如果是,則回傳 true, [ -k $file ] 回傳 false,
-p file 檢測檔案是否是有名管道,如果是,則回傳 true, [ -p $file ] 回傳 false,
-u file 檢測檔案是否設定了 SUID 位,如果是,則回傳 true, [ -u $file ] 回傳 false,
-r file 檢測檔案是否可讀,如果是,則回傳 true, [ -r $file ] 回傳 true,
-w file 檢測檔案是否可寫,如果是,則回傳 true, [ -w $file ] 回傳 true,
-x file 檢測檔案是否可執行,如果是,則回傳 true, [ -x $file ] 回傳 true,
-s file 檢測檔案是否為空(檔案大小是否大于0),不為慷訓傳 true, [ -s $file ] 回傳 true,
-e file 檢測檔案(包括目錄)是否存在,如果是,則回傳 true, [ -e $file ] 回傳 true,
cut
-b :以位元組為單位進行分割,這些位元組位置將忽略多位元組字符邊界,除非也指定了 -n 標志,
-c :以字符為單位進行分割,
-d:自定義分隔符,默認為制表符,
-f:與-d一起使用,指定顯示哪個區域,
-n:取消分割多位元組字符,
sed
-e <script>或--expression=<script> 以選項中指定的script來處理輸入的文本檔案,
-f <script檔案>或--file=<script檔案> 以選項中指定的script檔案來處理輸入的文本檔案,
-n 或--quiet或--silent 僅顯示script處理后的結果,
a :新增, a 的后面可以接字串,而這些字串會在新的一行出現(目前的下一行)~
c :取代, c 的后面可以接字串,這些字串可以取代 n1,n2 之間的行!
d :洗掉,因為是洗掉啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而這些字串會在新的一行出現(目前的上一行);
p :列印,亦即將某個選擇的資料印出,通常 p 會與引數 sed -n 一起運行~
s :取代,可以直接進行取代的作業哩!通常這個 s 的動作可以搭配正規表示法!
例子:
1 在第四行后添加新字串
sed -e 4a\newline testfile
2 第二行后面加入兩行字
nl /etc/passwd | sed '2a Drink tea or ......\
> drink beer ?'
3 第2-5行的內容取代成為『No 2-5 number』
nl /etc/passwd | sed '2,5c No 2-5 number'
4 搜索 /etc/passwd有root關鍵字的行
nl /etc/passwd | sed '/root/p'
5 洗掉/etc/passwd所有包含root的行,其他行輸出
nl /etc/passwd | sed '/root/d'
6 搜索/etc/passwd,找到root對應的行,執行后面花括號中的一組命令,每個命令之間用分號分隔,這里把bash替換為blueshell,再輸出這行
nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p;q}'
awk
-F fs or --field-separator fs
指定輸入檔案折分隔符,fs是一個字串或者是一個正則運算式,如-F:,
-v var=value or --asign var=value
賦值一個用戶定義變數,
-f scripfile or --file scriptfile
從腳本檔案中讀取awk命令,
-mf nnn and -mr nnn
對nnn值設定內在限制,-mf選項限制分配給nnn的最大塊數目;-mr選項限制記錄的最大數目,這兩個功能是Bell實驗室版awk的擴展功能,在標準awk中不適用,
-W compact or --compat, -W traditional or --traditional
在兼容模式下運行awk,所以gawk的行為和標準的awk完全一樣,所有的awk擴展都被忽略,
-W copyleft or --copyleft, -W copyright or --copyright
列印簡短的著作權資訊,
-W help or --help, -W usage or --usage
列印全部awk選項和每個選項的簡短說明,
-W lint or --lint
列印不能向傳統unix平臺移植的結構的警告,
-W lint-old or --lint-old
列印關于不能向傳統unix平臺移植的結構的警告,
-W posix
打開兼容模式,但有以下限制,不識別:/x、函式關鍵字、func、換碼序列以及當fs是一個空格時,將新行作為一個域分隔符;運算子**和**=不能代替^和^=;fflush無效,
-W re-interval or --re-inerval
允許間隔正則運算式的使用,參考(grep中的Posix字符類),如括號運算式[[:alpha:]],
-W source program-text or --source program-text
使用program-text作為源代碼,可與-f命令混用,
例子:
1 每行按空格或TAB分割,輸出文本中的1、4項
awk '{print $1,$4}' log.txt.
2 使用","分割
awk -F, '{print $1,$2}' log.txt
3 使用多個分隔符,先使用空格分割,然后對分割結果再使用","分割
awk -F '[ ,]' '{print $1,$2,$5}' log.txt
4 輸出第二列包含 "th",并列印第二列與第四列
awk '$2 ~ /th/ {print $2,$4}' log.txt
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/152910.html
標籤:Linux
上一篇:Linux系統學習 八、SSH服務—SSH遠程管理服務
下一篇:Centos7安裝nginx
