9.一、9.二、9.三、9.四、9.五、9.六、9.7centos
1、正則bash
一、grep 過濾指定關鍵詞,關鍵詞須要用 '' 單引號引發來。ssh
grep -r:編輯器
操做部分:工具
建立grep 目錄post
[root@localQt ~]# mkdir grep
[root@localQt ~]# ls
anaconda-ks.cfg grepcentos7
進入grep目錄
[root@localQt ~]# cd grep/spa
copy一個文件到grep目錄下3d
[root@localQt grep]# cp /etc/passwd .
[root@localQt grep]# ls
passwdblog
[root@localQt grep]# pwd
/root/grep
過濾passwd 文件中的nologin是用顏色標記出來的
[root@localQt grep]# grep 'nologin' passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
which查看grep
[root@localQt grep]# which grep
alias grep='grep --color=auto'
/usr/bin/grep
grep -c: 查看文件行數
[root@localQt grep]# grep -c 'nologin' passwd
15
grep -n :查看行號
[root@localQt grep]# grep -n 'nologin' passwd
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:dbus:x:81:81:System message bus:/:/sbin/nologin
15:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
16:avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
17:avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
18:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
19:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
grep -nv:
[root@localQt grep]# grep -vn 'nologin' passwd
1:root:x:0:0:root:/root:/bin/bash
2:bin:x:1:1:bin:/bin:/sbin/Nologin
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
grep -i :不區分大小寫
將passwd 第二行nologin的n改成N。
在n後面加i,能夠顯示第二行信息
[root@localQt grep]# grep -ni 'nologin' passwd
2:bin:x:1:1:bin:/bin:/sbin/Nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
grep -v 取反,顯示除nologin的信息
[root@localQt grep]# grep -vni 'nologin' passwd
1:root:x:0:0:root:/root:/bin/bash
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
grep -r :遍歷全部子目錄
[root@localQt grep]# grep -r 'root' /etc/
只要包括root的都顯示出來
若是不加- r:
[root@localQt grep]# grep 'root' /etc/
grep: /etc/: 是一個目錄
能夠針對目錄下的文件過濾文件中的root
grep -A2 :後面跟數字過濾出符合要求的行以及下面的N行
grep -B :後面跟數字過濾出符合要求的行以及上面的N行
2、grep 具體用法
[root@localQt grep]# grep '[0-9]' passwd
[ ] 表示方括號裏的任意一個字符0-9是一個區間
加-v 顯示不包含數字的行 [root@localQt grep]# grep -v '[0-9]' passwd
顯示以#號開頭的行
[root@localQt grep]# grep -n '^#' /etc/inittab
-n:
[root@localQt grep]# grep -n '[^0-9]' /etc/inittab
[root@localQt grep]# grep -n '^[^0-9]' /etc/inittab
相反的
[root@localQt grep]# grep -n '^[^0-9]' /etc/inittab
特殊符號:‘.’ 任意的一個字符
[root@localQt grep]# grep 'r.o' passwd
特殊符號 '*' : 表示*左邊的字符重複零個或多個
[root@localQt grep]# grep 'o*o' passwd
特殊符號'.*':表示任意一個字符
[root@localQt grep]# grep '.*' passwd
[root@localQt grep]# grep 'var.*mail' passwd
特殊花括號 ‘{ }’:括號的數字表示前面字符的重複範圍
[root@localQt grep]# grep 'o\{2\}' passwd
也能夠:[root@localQt grep]# egrep 'o{1}' passwd
egrep 與 grep - E相同
花括號前面的字符能夠用(),表示一個總體,使用小括號 必須用 :grep - E
特殊符號'+':加號前面的字符1次或屢次
[root@localQt grep]# grep 'o\+o' passwd
grep 'o\+o' :\脫意
egrep grep -E
本質區別egrep不須要加脫意字符
特殊符號'?'表示?前面的字符的重複次數爲0或1
特殊符號'|':表示或者
不區分大小寫 加i:[root@localQt grep]# grep -Ei 'root|var' passwd
grep/egrep命令
grep命令:過濾出指定關鍵字的行;
格式:grep [參數] ‘字符’ filename
grep -n 顯示符號要求的行,並顯示行號
grep -c 打印符合要求的行數
grep -v 打印不符合要求的行,取反的意思
grep -r 會把目錄下的全部文件所有遍歷;-r針對的是目錄,若是不加-r只能針對文件
grep -i 忽略大小寫
grep -A2 打印符合要求的行以及下面兩行
grep -B2 打印符合要求的行以及上面兩行
grep -C2 打印符合要求的行以及上下兩行
grep -w 匹配一個完整的單詞
grep -E 特殊符號脫意==egrep
centos7中自帶 --color顯示顏色 ;
grep 跟特殊符號的話,要用單引號
grep --include 包含
grep -l 只打印出含有匹配字符串的文件名,不輸出具體匹配行的數據
grep/egrep示例:
grep -n 'root' test.txt
grep -nv 'nologin' test.txt
grep '[0-9]'/etc/inittab
grep -v '[0-9]'/etc/inittab
grep '[^0-9]' inittab #非0-9 只要不是一個數字 ,方括號裏面的反義 取反非的意思
grep '^[^0-9]' inittab #以什麼開頭 以一個什麼字母開頭 非數字 外面是開頭 裏面就是非
grep -v '^#' /etc/inittab #號開頭的行
grep -v '^#' /etc/inittab|grep -v '^$'
grep '^[^a-zA-Z]' test.txt #非a-Z 方括號裏面的反義 取反非的意思
grep 'r.o' test.txt #任意的一個字符
grep 'oo*' test.txt
grep '0*0' passwd #左邊的0開始 0到N次
grep '.*' test.txt #匹配全部字符
grep 'o{2}' /etc/passwd #o花括號
grep -E 'o{2}' passwd #前面一個字符的重複範圍 ! o花括號2 表明出現2次o
egrep 'o{2}' /etc/passwd #和上面道理同樣
egrep 'o+' /etc/passwd
grep 'o\+o' passwd #加號表示 +號前面這個字符1次或者屢次
egrep 'o+o' passwd #和上面同樣
egrep 'oo?' /etc/passwd
grep 'o\?l' passwd #有的時候就是ol 沒有的時候就l 表示0個或者1個前面的字符
grep 'root\|nologin' passwd # root 或者 nologin \ 拖意
egrep 'root|nologin' /etc/passwd # 和上面同樣
grep 'root\|nologin\|ftp' passwd # 和上面同樣 再多一個 或者
grep -i 'root\|nologin\|ftp' passwd # 和上面同樣 再加了一個不區分大小寫
egrep '(oo){2}' /etc/passwd #一個組合oo
[0-9]:這裏的方括號,表示方括號裏面的任意一個字符;只要有一個數字,無論是幾,就算符合要求。
2、sed工具
建立一個sed目錄
[root@localQt ~]# mkdir sed
進入sed目錄,將grep目錄下的passwd 拷貝過來重命名爲pw.txt
[root@localQt sed]# cp ../grep/passwd pw.txt
sed的功能: sed 替換指定的字符
sed匹配指定的字符
[root@localQt sed]# sed '/root/'p pw.txt
若是不須要顯示無關的 加'-n'
一樣支持:# sed -n '/r.t/'p pw.txt、# sed -n '/r*t/'p pw.txt
如不想脫意 : sed -nr 相似於 grep -E
sed 使用 { }、|
sed打印指定的行
打印第4行到最後一行用'$'
[root@localQt sed]# sed -n '8,$'p pw.txt
sed -e 能夠匹配多個字符
# sed -e '1'p -e '/bus/'p -n pw.txt
sed命令比grep更強大,除了擁有查找功能外,還擁有替換功能
sed命令格式:sed -n 'n'p filename ,單引號內的n是數字,表示第幾行;
sed 能夠實現grep的大部分功能 ,可是不顯示顏色
sed -n 是打印符合條件的行,p是print打印的意思
sed -r 脫義(去除特殊符號自己的意義,使其表明特殊意義)
sed -e 進行屢次命令,和;效果一行
sed '/[0-9]'d 2.txt d表示刪除不包含數字的行;不是真正的刪除,是不顯示,至關於grep -v 取反
sed -n '/root/'Ip I 不區分大小寫
sed -i ' [0-9]'d 2.txt -i 是真正刪除掉文檔裏面不包含數字的行;一半不建議使用。
正則中 | 表示或者,而且要sed兩次表示
sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/' 1.txt 以:爲分割符,將第一段和最後一段互相替換,\1表示第一個()內容,\2表示第二個()內容,\3表示第三個內容。
sed -r 's/(.*)/aaa:&/g' 1.txt
三 、 awk
awk也是流式編輯器,針對文檔中的行和段進行操做 awk能夠分爲幾個部分:
匹配字符或者字符串
截取文檔中的某一段
條件操做符
數學運算
內置變量