1. 程式人生 > >shell的正則表示式

shell的正則表示式

##shell中的文字處理正則表示式##
gerp指令

在這裡插入圖片描述

grep root passwd ##過濾passwd中帶root的行##
grep -i root passwd ##忽略大小寫##
gerp -i root$ passwd ##已root結尾的##
grep -i ^root passwd ##以root開頭的##
grep -iE ^root|root$ passwd ##擴充套件過濾以root開頭和已root結尾的##
grep -iEv ^root|root$ passwd ##反向過濾,輸出root在中間和不含root的##
grep -i root passwd |grep -iEv ^root|root$ ##root在中間的##
grep w…s file ##過濾file檔案中已w開頭,已s結尾,中間有四個字元的專案##
grep w… file ##file檔案中已w開頭後面有五個字元或者更多的專案##
grep …s file ##file檔案中已s結尾前面有五個自古或者更多的羨慕##
grep -E “<…s” file ##檔案中已s結尾前面只有五個字元的專案##
grep -E “<w…>” file ##檔案中已w開頭後面只有五個字元的選項##
grep xy file ##檔案中有xy的選項的##
grep xy file ##檔案中x出現了任意次,以y結尾的,此處的x必須是連著的##
grep -E “x?y“ file ##檔案中x出現了0到1此的##
grep -E “x+y” file ##檔案中x出現了1到無數次已y結尾的,此處的xy是一個整體##
grep -E “<x?y>" file ##xy這個整體中x出現了0到一次的
grep -E "<x

y>" file ##x出現了一到無數次,已y結尾的##
grep -E “<x?y>” file ##x出現了0到1次,以y結尾的##
grep -E “<x{1}y>” file ##x只出現了一次以y結尾的##
grep -E “<x{,1}y>" file ##x出現小與一次,以y結尾的##
grep -E “<x{1,}y>" file ##x出現的次數大於等於一次,以y結尾的##
grep -E “<x{1,4}y>" file ##x出現了1次4次的以y結尾的##
grep -E “<(xy)?>" file ##xy這個整體出現了一次的##
grep -E “(xy)?" file ##xy這個整體出現了一次到無數次的##
grep -E “(xy){3,}" file ##xy這個整體出現了3次以上的##
grep -E “(xy){4}" file ##xy這個整體出現了4次的##
grep -E “x.*y” file ##以x開頭y結尾的,不論中間出現什麼,多少字元的##

##sed##
行編輯器,處理時,把當前處理的行儲存在臨時快取區
sed的
命令格式
sed[options]'command’file(s)
sed[options] -f scriptfile file(s)
sed對文字的處理

在這裡插入圖片描述

操作模式

在這裡插入圖片描述

sed -n ‘/^&/!p’ fstab ##顯示開頭不為空的行##
sed -n ‘/^&/!p’ fstab | sed -n ‘/^#/!p’ fstab ##表示開頭不為空也不為#的行,這裡的感嘆號表示不##
sed -n ‘/^UUID/p’ fstab ##表示開頭是UUID的行##
sed -n ‘/1$/p’ fstab ##表示結尾是1的行##
sed -n ‘/^#/!p’ fstab ##表示去掉開頭是#的行,因為#具有特殊含義,所以加入一個##

d操作模式

在這裡插入圖片描述

1表示在/etc/fstab中刪除以UUID開頭的行。2表示刪除刪除以#開頭的行。3表示刪除空行
4表示刪除第一行和第四行。5表示刪除不已uuid開頭的行
sed -n ‘/$/d’;’/#/d’ fstab ##刪除以#開頭的行和空行##
sed -n ‘/^#/d’ fstab ##刪除已#開頭的行
a操作模式
sed '/^UUID/a \hello sed /etc/fstab ##在/etc/fstab/中的已uuid開頭的行下面新增hello##
sed ‘/^uuid/a \hello sed\nwestos /etc/fstab’ ##表示在/etc/fsatb中的以uuid開頭的行下面加hello,再次換行加入westos##
c操作模式
sed ‘/^uuid/c \hello sed\nwestos /etc/fstab’ ##表示把/etc/fstab檔案中的以uuid開頭的行換成hello和下一行westos##
w操作模式

在這裡插入圖片描述

1表示把/etc/fstab/的以uuid開頭的行新增到/tmp/下並顯示。2表示1的操作但是不顯示
3表示顯示在/etc/fstab中的以uuid開頭的行號。4表示將/etc/issue中的內容新增到/etc/fstab的第六行中
i操作模式表示插入,插入是插入在行之上,新增為新增到行之下
sed ‘/^UUID/i\hello’ /etc/fstab ##表示在/etc/fstab檔案中以uuid開頭的行下面插入hello

其他用法

在這裡插入圖片描述

1表示顯示fstab中以uuid開頭的行號。2表示顯示fstab中以uuid開頭的行和行號
3表示在data檔案中,把brown替換為green,把dog換成green。4表示策略檔案對某一檔案執行。
5表示把檔案中的開頭是/的替換為#6表示把檔案中的開頭是/替換為#,這裡的@就表示/。
7表示把檔案中的每行的第一個/替換為#。8表示把檔案中的每行的所有/都替換為#。

其他用法2

在這裡插入圖片描述

1表示在檔案中的每一行後都加一個空行。2表示在檔案中的每一行都加一個空格
3表示在在每一行後面加行號並且行號後面加空格。4表示在檔案中顯示結尾是p的行號

##awk報告生成器##
awk處理機制,awk會逐行處理文字在命令格式上體現如下
BEGIN{}:讀入第一行文字之前執行,一般用來初始化操作
{}:表示逐行處理
END{}:表示處理完最後一條文字之後處理。一般用來輸出處理結果
awk的基本用法

在這裡插入圖片描述

awk的基本用法

在這裡插入圖片描述