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é)尾的字符
匹配任意一個(gè)以什么開頭的字符
匹配整個(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ò)展正則:+ | () {} ?