DAY 17 操作系統(tǒng)正則符號(hào) 三劍客grep

01課程介紹部分

1.系統(tǒng)通配符號(hào)

2.系統(tǒng)正則符號(hào)

02課程知識(shí)回顧

1.系統(tǒng)文件屬性 (文件類型 權(quán)限信息 用戶信息 inode/block 硬鏈接 軟鏈接)

find -ls ---找到數(shù)據(jù)后顯示數(shù)據(jù)屬性

[root@oldboy66 ~]# find /oldboy -type f -ls(按照塊顯示文件大小)

33575009 4 -rw-r--r-- 1 root root 4 Jul 26 23:11 /oldboy/oldboy.txt

33689540 0 -rw-r--r-- 1 root root 0 Jul 28 09:41 /oldboy/oldboy1.txt

33689542 0 -rw-r--r-- 1 root root 0 Jul 28 09:41 /oldboy/oldboy2.txt

33689543 0 -rw-r--r-- 1 root root 0 Jul 28 09:41 /oldboy/oldboy3.txt

33689544 0 -rw-r--r-- 1 root root 0 Jul 28 09:41 /oldboy/oldboy4.txt

[root@oldboy66 ~]# find /oldboy -type f -ls|column -t----對齊

33575009 4 -rw-r--r-- 1 root root 4 Jul 26 23:11 /oldboy/oldboy.txt

33689540 0 -rw-r--r-- 1 root root 0 Jul 28 09:41 /oldboy/oldboy1.txt

33689542 0 -rw-r--r-- 1 root root 0 Jul 28 09:41 /oldboy/oldboy2.txt

33689543 0 -rw-r--r-- 1 root root 0 Jul 28 09:41 /oldboy/oldboy3.txt

33689544 0 -rw-r--r-- 1 root root 0 Jul 28 09:41 /oldboy/oldboy4.txt

[root@oldboy66 ~]# stat /etc/ 

 File: ‘/etc/’

 Size: 8192  Blocks: 24 IO Block: 4096 directory

Device: 803h/2051d Inode: 16777281 Links: 83

Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2019-07-27 04:40:20.091208195 +0800

Modify: 2019-07-27 01:00:28.409733868 +0800

Change: 2019-07-27 01:00:28.409733868 +0800

 Birth: -

[root@oldboy66 ~]# xfs_info /dev/sda3

meta-data=/dev/sda3 isize=512 agcount=4, agsize=1232320 blks

 = sectsz=512 attr=2, projid32bit=1

 = crc=1 finobt=0 spinodes=0

data = bsize=4096  blocks=4929280, imaxpct=25

 [root@oldboy66 ~]# echo 123456 >oldboy1.txt

[root@oldboy66 ~]# ll oldboy1.txt

-rw-r--r-- 1 root root 7 Jul 28 09:49 oldboy1.txt

[root@oldboy66 ~]# ll -sdih /etc/services

16777649 656K -rw-r--r--. 1 root root 655K Jun 7 2013 /etc/services

2.系統(tǒng)符號(hào)信息 : 基礎(chǔ)符號(hào)系列

基礎(chǔ)符號(hào)系列:#注釋,root超級(jí)用戶提示符 $普通用戶提示符,調(diào)取變量 !取反 |管道 \轉(zhuǎn)義符號(hào)

引號(hào)符號(hào)系列:

“”:輸入即輸出,會(huì)解析部分?jǐn)?shù)據(jù)信息

‘’:所見即所得

``:先執(zhí)行引號(hào)里面的將執(zhí)行結(jié)果交由外面命令繼續(xù)執(zhí)行

沒引號(hào)的:同雙引號(hào)一樣,可識(shí)別序列

路徑符號(hào)系列:

~家目錄提示符 - 上一次所在路徑 ..上一級(jí)目錄 .當(dāng)前路徑
重定向符號(hào);> >> 2> 2>> < <<

正確錯(cuò)誤信息追加到文件中:方法1:&>> /oldboy.log 方法2: >>/oldboy.log 2>&1

邏輯符號(hào):

&&: 并且關(guān)系 前面命令執(zhí)行成功,再執(zhí)行后面的命令

||: 或者關(guān)系 前面命令執(zhí)行失敗,再執(zhí)行后面的命令

; :多個(gè)命令同時(shí)執(zhí)行

系統(tǒng)通配符號(hào):

*: 匹配所有內(nèi)容

ll /oldboy/*.txt---匹配以.txt結(jié)尾的詳細(xì)信息

rm -f /oldboy/.old*.txt ---刪除以old開頭.txt結(jié)尾的所有隱藏文件

{}:匹配序列信息,可是數(shù)字序列,也可以是字母序列

 [root@oldboy66 ~]# echo {1..10}

1 2 3 4 5 6 7 8 9 10

[root@oldboy66 ~]# echo {01..10..2}

01 03 05 07 09

[root@oldboy66 ~]# echo {00..10..2}

00 02 04 06 08 10

[root@oldboy66 ~]# echo {a..z}

a b c d e f g h i j k l m n o p q r s t u v w x y z

  [root@oldboy66 ~]# echo {1,2}{A,B}

1A 1B 2A 2B

[root@oldboy66 ~]# echo {1..3}{A..C}

1A 1B 1C 2A 2B 2C 3A 3B 3C

[root@oldboy66 ~]# echo {1..3}{A..C}

1A 1B 1C 2A 2B 2C 3A 3B 3C

 [root@oldboy66 ~]# echo {1..3}{a..c}{A..C}

1aA 1aB 1aC 1bA 1bB 1bC 1cA 1cB 1cC 2aA 2aB 2aC 2bA 2bB 2bC 2cA 2cB 2cC 3aA 3aB 3aC 3bA 3bB 3bC 3cA 3cB 3cC

快速備份數(shù)據(jù):

cp /oldboy/oldboy1/oldboy2/oldboy3/oldboy.txt{,.bak}

cp /oldboy/oldboy1/oldboy2/oldboy3/oldboy.txt /oldboy/oldboy1/oldboy2/oldboy3/oldboy.txt.bak

快速還原數(shù)據(jù):

cp /oldboy/oldboy1/oldboy2/oldboy3/oldboy.txt{.bak,}

cp /oldboy/oldboy1/oldboy2/oldboy3/oldboy.txt.bak /oldboy/oldboy1/oldboy2/oldboy3/oldboy.txt

按日期備份的文件如何還原日志:

cp messages{-20190709,}

系統(tǒng)正則符號(hào): 給grep sed awk 提供輔助

基礎(chǔ)正則: BRE

擴(kuò)展正則:ERE

終極目標(biāo):

01, 文件test.txt

張三:198404808500000

李四:288288989991232

王無:oldgirl

如何找出不合理身份證人員信息

02,如何過濾出IP地址

基礎(chǔ)正則:

^:以什么開頭的信息

[root@oldboy66 ~]# ll /etc/|grep "^d" ---過濾/etc中目錄文件,以d 開頭

drwxr-xr-x. 3 root root 101 Jun 21 20:09 abrt

drwxr-xr-x. 2 root root 236 Jun 21 20:09 alternatives

drwxr-x---. 3 root root 43 Jun 21 20:09 audisp

$:以什么結(jié)尾的信息

[root@oldboy66 ~]# grep "d$" /etc/selinux/config

SELINUX=disabled

解釋說明: 如果結(jié)尾有空格信息的,過濾時(shí)會(huì)出現(xiàn)異常

利用底行模式 :set list 可以查看到結(jié)尾空行信息

利用命令cat -A /etc/selinux/config 看有沒有空格存在

\:(不屬于正則) 轉(zhuǎn)義符號(hào)

1, 將有特殊意義的符號(hào),還原本身符號(hào)的意義

[root@oldboy66 ~]# grep ".$" /etc/selinux/config

# This file controls the state of SELinux on the system.

# enforcing - SELinux security policy is enforced.

2, 將沒有意義的字符,變?yōu)橛幸饬x的字符

\r \n :換行符

\t:制表符

[root@oldboy66 ~]# cat oldboy.txt

oldboy1oldoby2

[root@oldboy66 ~]# echo "oldboy1\noldoby2">oldboy.txt

[root@oldboy66 ~]# cat oldboy.txt

oldboy1\noldoby2

[root@oldboy66 ~]# echo -e "oldboy1\noldoby2">oldboy.txt

[root@oldboy66 ~]# cat oldboy.txt

oldboy1

oldoby2

3,取消別名功能: \rm

^$: 空行信息

  [root@oldboy66 ~]# grep -v (取反)"^$" /etc/selinux/config

\# This file controls the state of SELinux on the system.

\# SELINUX= can take one of these three values:

\# enforcing - SELinux security policy is enforced.

. :匹配任意一個(gè)且只有一個(gè)字符

匹配任意一個(gè)以什么結(jié)尾的字符

2.png

匹配任意一個(gè)以什么開頭的字符


3.png

匹配整個(gè)文件所有任意字符

[root@oldboy66 ~]# grep -o "^." /etc/selinux/config

S

[root@oldboy66 ~]# grep -o "." /etc/selinux/config

T

h

i

s

總結(jié): 匹配篩選文件信息

1,會(huì)按行進(jìn)行匹配

2,匹配信息會(huì)有貪婪特性

3,利用grep -o可以查看匹配信息的過程

* : 匹配前一個(gè)字符連續(xù)出現(xiàn)0次或者多次

[root@oldboy66 ~]# cd /oldboy

[root@oldboy66 oldboy]# grep -o "0*" oldboy.txt

000

00000

.* : 匹配所有字符包括空行

      [root@oldboy66 oldboy]# grep ".*" oldboy.txt -o

I am oldboy teacher!

I teach linux.

I like badminton ball ,billiard ball and chinese chess!

my blog is http://oldboy.blog.51cto.com

[ ]: 匹配中括號(hào)中任意字符

[root@oldboy66 oldboy]# grep "ab" oldboy.txt ---表示過濾一個(gè)字符串

[root@oldboy66 oldboy]# grep "[abc]" oldboy.txt

[圖片上傳失敗...(image-be46e8-1564221436077)]

濾出所有小寫字母:

[root@oldboy66 oldboy]# grep "[a-z]" oldboy.txt --- 過濾小寫字母

[root@oldboy66 oldboy]# grep "[A-Z]" oldboy.txt --- 過濾大寫字母

[root@oldboy66 oldboy]# grep "[a-zA-Z]" oldboy.txt --- 過濾所有字母

[root@oldboy66 oldboy]# grep "[a-Z]" oldboy.txt --- 過濾所有字母

[root@oldboy66 oldboy]# grep -i "[a-z]" oldboy.txt --- grep - i忽略大小寫進(jìn)行過濾

系統(tǒng)擴(kuò)展正則:(高級(jí)符號(hào)) 三劍客識(shí)別需加參數(shù) egrep / grep -E sed -r

+ : 匹配前一個(gè)字符連續(xù)出現(xiàn) 1次或多次

[root@oldboy66 oldboy]# egrep "0+" oldboy.txt

my qq num is 49000448.

not 4900000448.

       [root@oldboy66 oldboy]# grep -E "[0-9]+" test.txt

張三:198404808500000

李四:288288989991232

[root@oldboy66 oldboy]# grep -vE "[0-9]+" test.txt

王無:oldgirl

| :匹配多個(gè)字符串信息

匹配oldboy和oldgirl單詞信息

1, [root@oldboy66 oldboy]# grep "oldb[oe]y" oldboy.txt

I am oldboy teacher!

my blog is http://oldboy.blog.51cto.com

my god ,i am not oldbey,but OLDBOY

2,[root@oldboy66 oldboy]# grep "oldb.y" oldboy.txt

I am oldboy teacher!

my blog is http://oldboy.blog.51cto.com

my god ,i am not oldbey,but OLDBOY

3, [root@oldboy66 oldboy]# grep -E "oldboy|oldbey" oldboy.txt

I am oldboy teacher!

my blog is http://oldboy.blog.51cto.com

my god ,i am not oldbey,but OLDBOY

企業(yè)應(yīng)用:配置文件中有注釋有空行,如何取消注釋和空行

[root@oldboy66 oldboy]# grep -vE "$|#" /etc/services

iqobject 48619/tcp # iqobject

iqobject 48619/udp # iqobject

matahari 49000/tcp # Matahari Broker

() :將多個(gè)字符信息進(jìn)行整合過濾 難點(diǎn) [root@oldboy66 oldboy]# egrep "(old)" oldboy.txt

I am oldboy teacher!

my blog is http://oldboy.blog.51cto.com

實(shí)現(xiàn)后項(xiàng)應(yīng)用前項(xiàng)進(jìn)行替換 常用 配合sed 命令使用時(shí),可以實(shí)現(xiàn)后項(xiàng)引用前項(xiàng)

[root@oldboy66 oldboy]# echo "123"|sed -r 's#([0-9]+.)#<\1>#g'

<123>

[root@oldboy66 oldboy]# echo "123"|sed -r 's#(.)(.)(.)#<\1><\2><\3>#g'

<1><2><3>

[root@oldboy66 oldboy]# echo "1234567"|sed -r 's#([0-9])#<\1>#g'

<1><2><3><4><5><6><7>

說明:后項(xiàng)引用前項(xiàng)只能引用1-9個(gè)小括號(hào)

解決如何批量創(chuàng)建用戶: 通過后項(xiàng)引用前項(xiàng)實(shí)現(xiàn)批量創(chuàng)建用戶

useradd oldboy01;echo 123456|passwd --stdin oldboy01

[root@oldboy66 oldboy]# seq -w 10|sed -r 's#(.*)#useradd oldboy\1;echo 123456|passwd --stdin oldboy\1#g'

[root@oldboy66 oldboy]# seq -w 10|sed -r 's#(.*)#useradd oldboy\1;echo 123456|passwd --stdin oldboy\1#g'|bash

{} : 匹配前一個(gè)字符連續(xù)出現(xiàn)指定的次數(shù)

{n,m}:匹配前一個(gè)字符連續(xù)出現(xiàn)至少n次,最多m 次

{,m}:匹配前一個(gè)字符連續(xù)出現(xiàn)至少0次,最多m 次

{n}:匹配前一個(gè)字符連續(xù)出現(xiàn)正好n次

{n,}: 匹配前一個(gè)字符連續(xù)出現(xiàn)至少n次,最多不限

[root@oldboy66 oldboy]# egrep "0{2,5}" oldboy.txt

kog 000

my qq num is 49000448.

not 4900000448.

[root@oldboy66 oldboy]# egrep "0{2,5}" oldboy.txt -o

000

000

00000

[root@oldboy66 oldboy]# egrep "0{1,3}" oldboy.txt

kog 000

my qq num is 49000448.

not 4900000448.

[root@oldboy66 oldboy]# egrep "0{3}" oldboy.txt ---0正好出現(xiàn)3次

kog 000

my qq num is 49000448.

not 4900000448.

? :匹配前一個(gè)字符連續(xù)出現(xiàn)0次或者1次

總結(jié): * 連續(xù)出現(xiàn)0/多次 +連續(xù)出現(xiàn)1/多次 ?連續(xù)出現(xiàn)0/1次

[root@oldboy66 oldboy]# egrep "o*" test1.txt

by

boy

booy

boooy

booooy

[root@oldboy66 oldboy]# egrep "o+" test1.txt

boy

booy

boooy

booooy

[root@oldboy66 oldboy]# egrep "o?" test1.txt

by

boy

booy

boooy

booooy

課程總結(jié): 系統(tǒng)特殊符號(hào) 系統(tǒng)通配符號(hào) 系統(tǒng)正則符號(hào)

通配符號(hào)匹配信息作用:匹配文件名稱信息* {}

正則符號(hào)匹配信息作用:匹配文件內(nèi)容信息

基礎(chǔ)正則: ^ $ . * ^$ .* [ ] [ ^]

擴(kuò)展正則:+ | () {} ?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末余爆,一起剝皮案震驚了整個(gè)濱河市揪阿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌越妈,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異结序,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)薪捍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門笼痹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人酪穿,你說我怎么就攤上這事凳干。” “怎么了被济?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵救赐,是天一觀的道長。 經(jīng)常有香客問我只磷,道長经磅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任钮追,我火速辦了婚禮预厌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘元媚。我一直安慰自己轧叽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布刊棕。 她就那樣靜靜地躺著炭晒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪甥角。 梳的紋絲不亂的頭發(fā)上网严,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機(jī)與錄音嗤无,去河邊找鬼震束。 笑死怜庸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的驴一。 我是一名探鬼主播休雌,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼肝断!你這毒婦竟也來了杈曲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤胸懈,失蹤者是張志新(化名)和其女友劉穎担扑,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體趣钱,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涌献,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了首有。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片燕垃。...
    茶點(diǎn)故事閱讀 40,117評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖井联,靈堂內(nèi)的尸體忽然破棺而出卜壕,到底是詐尸還是另有隱情,我是刑警寧澤烙常,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布轴捎,位于F島的核電站,受9級(jí)特大地震影響蚕脏,放射性物質(zhì)發(fā)生泄漏侦副。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一驼鞭、第九天 我趴在偏房一處隱蔽的房頂上張望秦驯。 院中可真熱鬧,春花似錦挣棕、人聲如沸汇竭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至两曼,卻和暖如春皂甘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背悼凑。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工偿枕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留璧瞬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓渐夸,卻偏偏與公主長得像嗤锉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子墓塌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容