正則表達式
- grep/egrep 工具的使用
- -c:表示打印符合要求的行數
- -i:忽略大小寫
- -n:輸出符合要求的行及其行號
- -v:打印不符合要求的行
- -A:後+一個數字(有無空格都可以),如-A2表示打印符合要求的行以及下面兩行
- -B:後+一個數字,如-B2表示打印符合要求的行以及上面兩行
- -C:後+一個數字,如-C2表示打印符合要求的行以及上下各兩行
- 過濾出帶有某個關鍵詞的行,並輸出行號:
# grep -n 'root' /etc/passwd
- 過濾出不帶有某個關鍵詞的行,並輸出行號:
# grep -nv 'nologin' /etc/passwd
- 過濾出所有不包含數學的行:
# grep -v '[0-9]' /etc/inittab
- 過濾出所有包含數學的行:
# grep '[0-9]' /etc/inittab
- 過濾掉所有以#開頭的行:
#grep -v '^#' /etc/sos.conf
//含空行 - 過濾掉所有空行和以#開頭的行:
#grep -v '^#' /etc/sos.conf |grep -v '^$'
- 過濾出任意一個字符和重複字符:
grep 'r.o' /etc/passwd
//r.o,表示r與o之間有一個任意字符的行過濾出來 #grep 'ooo*' /etc/passwd
:表示0個或多個*前面的字符- 指定要過濾出的字符出現次數:
#grep 'o\{2\}' /etc/passwd
- 過濾出一個或多個指定的字符:
# egrep 'o+' test.txt
- 過濾出0個或一個指定的字符:
# egrep 'o?' text.txt
;# egrep 'ooo?' text.txt
- 過濾出字符串1或者字符串2:
egrep 'aaa|111|ooo' text.txt
- egrep中()的應用:
egrep 'r(oo|at)o' text.txt
- sed工具的使用
- 打印某行,格式爲
sed -n 'n'p filename
//單引號內的n是一個數字,表示第幾行。-n選項的作用是知顯示我們要打印的行 - 把所有行都打印出來:
sed -n '1,$'p filename
- 打印包含某個字符串的行:
sed -n '/root/'p test.txt
- 刪除某些行:
#sed '1'd test.txt
- 替換字符或者字符串:
#sed '1,2s/ot/to/g' test.txt
//s表示替換;g表示本行全局替換,若不加則指替換本行出現的第一個;/分隔符(還有#和@)
- 刪除文檔中所有的數字和字母
#sed 's/[0-9a-zA-Z]//g' test.txt
- 調換兩個字符串的位置:
sed 's/\(rot\)\(.*\)\(bash\)/\3\2\1/' test.txt
//“()”在sed裏屬特殊符號,必須在前面加轉義符“\”,替換是則寫成\1 、\2、 \3的形式 - 直接修改文件的內容:
sed -i 's/ot/to/g' test.txt
- awk工具的使用
- 截取文檔中的某個段:
head -n2 test.txt |awk -F ':' '{print $1}'
//-F是指定分隔符,"$1
"爲第一個字段,但“$0
”表示整行。 - 匹配字符或者字符串:
#awk '/oo/' text.txt
- 條件操作符:
#awk -F ':' '$3=="o"' /etc/passwd
//"!="表示不等於;“&&”表示並且;“||”表示或者 - awk的內置變量,常用變量有OFS、NF、NR、-F,NF表示用分隔符分隔後一共多少段,NR表示行號