在介紹三劍客以前,先來認識一下通配符和正則表達式linux
通配符
git
正則表達式正則表達式
做用:經過一些特殊字符,來表示一類字符內容shell
一、字符匹配bash
. 任意一個字符工具
[ ] 範圍內的任意一個字符spa
[^ ] 取反3d
字符類 [:digit:] [:alnum:] [:alpha:] [:lower:] [:upper:] [:space:] [:punct:]code
二、次數匹配blog
* 匹配前面的字符0次到屢次
? 匹配前面的字符0次到1次
+ 匹配前面的字符1次到屢次
三、位置錨定
^ 錨定行首
$ 錨定行尾
\b 錨定詞首和錨定詞尾
\> 錨定詞尾
\< 錨定詞首
<\root\> 匹配root單詞
\{m\} 匹配前面的字符m次
\{m,n\} 匹配前面的字符m到n次
四、分組
\(\)
分組特性:默認清空下,linux系統下回爲分組指定變量,變量表示形式\1 \2 \3
day4--文本處理三劍客awk,sed,grep
三劍客用法很是靈活強大,須要在練習中慢慢體會,遂以練習爲主。
awk做爲三劍客的老大,擅長於取列,主要用來作文本輸出格式化
awk在處理文件時是逐行處理的
在awk中,所有行稱爲$0,第一個字段稱爲$1,第二個字段稱爲$2……
NR爲行號,NF表示最後一行
BEGIN表示最開始執行,END表示最末尾執行,由於這種特性,BEGIN經常用來賦值
awk [選項] [處理命令(腳本)] [文件]
awk -F 指定輸入文件折分隔符 awk -v 賦值一個用戶定義變量 awk -f 從腳本文件中讀取awk命令
例一、輸出/etc/passwd第一行的第一個域
例二、打印出/etc/passwd的第3個域和第5個域
例三、匹配/var/log/message中,帶有erro關鍵字的相關信息
例四、輸出/etc/passwd中文件名,行數,列數,和整行信息
awk -F ':' '{print FILENAME, NR , NF ,$0}' /etc/passwd
例五、使用冒號分隔符,查詢最後一列
例六、使用awk輸出第一塊網卡的ip地址
sed做爲三劍客的老二,擅長取行,替換和數據搜尋
sed [選項] [腳本] [文件]
sed -e 以選項中指定的腳原本處理輸入結果 sed -f 以選項中指定的腳本文件來處理輸入結果 sed -n 只顯示處理後結果
sed -i 替換
例一、查看/etc/passwd5-10行
這個p表明print打印,同理,d表明delete刪除
例二、搜尋/etc/passwd中有root關鍵字的行
例三、新建一個文件,並刪除2到4行
grep [option]... PATTERN [FILE]
PATTERN通常使用兩種方法,正則表達式和通配符
egrep = grep -E 使用擴展的正則表達式進行匹配
fgrep = fast grep 只使用文件通配符進行匹配
grep 默認使用正則表達式進行文本匹配
grep -P使用perl語言的正則表達式引擎進行搜索 grep -f指定文件 grep -i 忽略大小寫 grep -v反選 grep --color=auto 語法着色 grep -c統計 grep -o輸出時僅顯示匹配內容(默認輸出的是匹配到的行) grep -n顯示行號 grep -w只匹配與整個單詞匹配的行
例一、顯示/proc/meminfo文件中大小s開頭的行
例二、顯示/etc/passwd文件中不以/bin/bash結尾的行
例三、顯示/etc/passwd文件中UID最大的用戶的用戶名
例四、若是用戶root存在,顯示其默認的shell程序
例五、找出/etc/passwd中的兩位或三位數