文字過濾命令:全面搜尋研究正規表示式並顯示出來
grep 命令是一種強大的文字搜尋工具 , 根據使用者指定的「模式」對目標文字進行匹配檢查 , 列印匹配到的行
由正規表示式或者字元及基本文字字元所編寫的過濾條件
預設貪婪模式 ##有就能過濾出來egrep = grep -e
擴充套件正規表示式格式grep 正規表示式與擴充套件正規表示式
正規的grep不支援擴充套件的正規表示式子 , 豎線是用於表示」或」的擴充套件正規表示式元字元 , 正規的 grep 無法識別.
加上反斜槓 , 這個字元就被翻譯成擴充套件正規表示式 , 就像 egrp 和 grep -e 一樣
grep 匹配條件 處理檔案
grep root passwd ##過濾有root的選項
grep ^root passwd ##以root開頭的選項
grep root$ passwd ##以root結尾的選項
grep -i "root" passwd ##忽略大小寫查詢有root的項
grep -e "root|root" passwd
##擴充套件正規表示式;『|『或的關係root|root都可以被過濾出來
grep root passwd -n2 ##過濾並顯示這一行的上下各兩行
字元的匹配次數設定
加在字元後面
'.'表示乙個字元
* ##字元出現0-任意次
\? ##字元出現0-1次
\+ ##字元出現1-任意次
\ ##字元出現n次
| ##字元出現最少出現m次,最多出現n次
\ ##字元出現 0-n次
\ ##字元出現至少m次
\(xy\)\xy ##關鍵字出現n 次
.* ##關鍵字之間匹配任意字元
grep -e "xy" file ##過濾x字元出現一次的項
grep -e "(xy)" file ##過濾xy至少出現1次的項
字元的匹配位置設定
^ 關鍵字 ##開頭
關鍵字 $ ##結尾
\< 關鍵字 ##只以這個單詞開頭
關鍵字 \> ##只以這個單詞結尾
\< 關鍵字 \> ##只含這個單詞
行編輯器:stream editor用來操作純 ascii 碼的文字
快取空間處理時 , 把當前處理的行儲存在臨時緩衝區中 , 稱為「模式空間」 (pattern space) 可以指定僅僅處理哪些行
sed符合模式條件的處理,不符合條件的不予處理處理完成之後把緩衝區的內容送往螢幕
接著處理下一行 , 這樣不斷重複 , 直到檔案末尾
p ##多顯示
-n p ##單顯示
d ##不顯示
!d = -n p
i ##上插入
a ##下新增
c ##剪下
w ##將某一行匯入某檔案
\ ##表示轉譯
eg: \/ ##將有特殊含義的/轉譯為普通的/
n ##提前載入檔案中下一行到sed程式中
-i ##儲存修改
p模式
顯示
sed -n '/\:/p' file
sed -n '/xx$/p' file
sed -n '/^xx/p^' file
sed -n '2,6p' file ##顯示2-6行
sed -n '2;6!p' file ##不顯示2和6行
d模式
不顯示
sed '/^xx/d' file ##xx開頭的不顯示
sed '1,4d' file
sed -n '/^xx/!d' file ##顯示xx開頭的行
a模式
sed '/^xx/a\***x' file ##在xx開頭的行下新增一行***x
sed '/^xx/a\***x\n***x' file ##在xx開頭的行下新增兩行***x
i模式
sed '/^uuid/i\hello sed\nwestos' file ##在uuid開頭的行下新增兩行
c模式
change
sed '/^uuid/c\hello sed\nwestos' file ##將uuid開頭的行換成\hello sed\nwestos兩行內容
w模式
sed '/^xx/w /檔案路徑' file ##將xx開頭的寫入檔案
sed -n '/^xx/w /檔案路徑' file
sed '/^xx/=' file ##在xx開頭的行上方新增行號
sed '6r /檔案路徑' file ##將檔案的第六行寫入file檔案
其他用法
sed -n '/^uuid/=' file
sed -n -e '/^uuid/p' -e '/^uuid/=' fstab
sed -e 's/brown/green/; s/dog/cat/' data
sed -f rulesfile file ##根據rulesfile的內容對檔案做更改
sed 's/^\//#/'/etc/fstab ##把開頭的/變成#
sed 's@^/@#@g'/etc/fstab
sed 's/\//#/'/etc/fstab ##把每一行的第乙個/變成#
sed 's/\//#/g/'/etc/fstab ##全文的/變成#
sed 'g' data ##在每一行下方加空行
sed '$!g' data ##最後一行不加
sed '=' file | sed 'n; s/\n/ /' ##在檔案每一行開頭加行號
sed -n '$p' file ##檢視最後一行
linux 上面預設使用 gawk
awk 處理機制 :awk 會逐行處理文字 , 支援在處理第一行之前做一些準備工作 , 以及在處理完最後一行做一些總結性質的工作 , 在命令格式上分別體現如下 :
begin{}: 讀入第一行文字之前執行 , 一般用來初始化操作
{}: 逐行處理 , 逐行讀入文字執行相應的處理 , 是最常見的編輯指令快
end{}: 處理完最後一行文字之後執行 , 一般用來輸出處理結果用法
awk '' file ##列印檔案名
awk '' file ##第nr行,有nf列
awk -f : '/^ro/' /etc/passwd
awk -f : 'begin end' ##:做分隔符列印第一部分,並在開頭加上name,結尾加上end
awk -f : '/^[a-d]/' /etc/passwd
awk -f : '/^a|nologin$/' /etc/passwd
awk -f : '$6~/bin$/' /etc/passwd ##列印第六列是以bin結尾的行的1,6列
awk -f : '$7!~/nologin$/' /etc/passwd
awk -f : '' ##列印所有,帶分隔符:
awk -f : '' ##第一列為0,列印剩下的,不帶分隔符
eg:ifconfig etho | awk '/inet\>/' ##抓取eth0網絡卡的ip
文字處理 grep 正規表示式
i 區分大小寫 root centos7 root2018 07 30 cat grep test root root2 zhuzhu2 tom3 root centos7 root2018 07 30 grep o oo grep test oooo root centos7 root2018 0...
正規表示式和文字處理器
fs 指定每行文字的字段分隔符,預設為空格或製表位 nf 當前處理的行的字段個數 nr 當前的行的行號 序數 0 當前的第n個字段 第n列 rs 資料記錄分隔,預設為 n,即每一行一條記錄 逐行讀取文字,預設以空格為分隔符進行分隔,將分隔所得的哥哥字段儲存到內建變數中,並按模式或者條件執行編輯命令 ...
Linux入門 文字處理和正規表示式
1 文字處理基本操作 more less 逐屏顯示文字,一般用在很長的檔案檢視 head tail 檢視檔案頭幾行或者末尾幾行 head ntail nwc word count,對於文字進行計數 wc l 按照回車符計算有多少行wc c 計算有多少單詞tr translate 翻譯字元,可以將乙個...