系統(tǒng)通配符號(hào):
- --- 匹配所有內(nèi)容
ls -l /oldboy/.txt --- 匹配以.txt結(jié)尾信息進(jìn)行詳細(xì)顯示
rm -rf /oldboy/ --- 刪除oldboy目錄中所有信息, 但是默認(rèn)無法刪除隱藏文件
rm -f /oldboy/.old.txt --- 刪除以old開頭 .txt結(jié)尾的所有隱藏文件
find /oldboy -name ".txt"
find /oldboy -name "oldboy"
find /oldboy -name "old.txt"
{} --- 匹配序列信息
數(shù)字序列:
字母序列:
組合序列:
echo A{,2} --- A A2
/oldboy/oldboy01/oldboy02/oldboy03/oldboy04/oldboy.txt .bak
快速備份數(shù)據(jù)
cp /oldboy/oldboy01/oldboy02/oldboy03/oldboy04/oldboy.txt{,.bak}
cp /oldboy/oldboy01/oldboy02/oldboy03/oldboy04/oldboy.txt /oldboy/oldboy01/oldboy02/oldboy03/oldboy04/oldboy.txt.bak
快速還原數(shù)據(jù)
cp /oldboy/oldboy01/oldboy02/oldboy03/oldboy04/oldboy.txt{.bak,}
cp /oldboy/oldboy01/oldboy02/oldboy03/oldboy04/oldboy.txt.bak /oldboy/oldboy01/oldboy02/oldboy03/oldboy04/oldboy.txt
cp messages{-20190707,}
系統(tǒng)正則符號(hào): grep sed awk
基礎(chǔ)正則: basic regular expression BRE
擴(kuò)展正則: extended regular expression ERE
終極目標(biāo):
-
文件test.txt
張三 110106198803076651
李四 106106199903076651
王五 oldboygrep -vE "[0-9]+" test.txt
文件內(nèi)容做修改
張三 110106198803076651
李四 106106199903076651
王五 10101010100101
周六 101010101010220101010
grep -E "[0-9X]{18}" test.txt --- 將身份輸入不足18位的進(jìn)行排除如何找出不合理身份證人員信息
如何取出IP地址信息
基礎(chǔ)正則:
^ --- 以什么開頭的信息
# ll /etc/|grep "^d"
drwxr-xr-x. 3 root root 101 Jul 3 20:25 abrt
drwxr-xr-x. 2 root root 252 Jul 17 18:13 alternatives
drwxr-x---. 3 root root 43 Jul 3 20:26 audisp
' /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted
說明: 如果結(jié)尾有空格信息, 過濾是會(huì)出現(xiàn)異常
利用底行模式 :set list 可以查看結(jié)尾空格信息
利用命令查看 cat -A /etc/selinux/config
問題: 將以點(diǎn)結(jié)尾的信息過濾出來:
grep '. --- 空行信息
grep -v "^$" /etc/selinux/config
(.) --- 匹配任意一個(gè)且只有一個(gè)字符
grep "^." /etc/selinux/config --- 匹配任意一個(gè)以什么開頭的字符
grep ".$" /etc/selinux/config --- 匹配任意一個(gè)以什么結(jié)尾的字符
grep "." /etc/selinux/config --- 匹配整個(gè)文件所有任意字符
總結(jié)匹配篩選文件信息:
01. 會(huì)按照行進(jìn)行匹配
02. 會(huì)匹配信息貪婪特性
03. 利用grep -o可以查看匹配信息的過程
(*) --- 匹配前一個(gè)字符連續(xù)出現(xiàn)0次或者多次
創(chuàng)建一個(gè)測(cè)試文件:
創(chuàng)建測(cè)試文件:
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448.
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
匹配文件中數(shù)字0信息
[root@oldboyedu oldboy]# grep "0*" oldboy.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448.
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
[root@oldboyedu oldboy]# grep -o "0*" oldboy.txt
000
00000
(.) --- 匹配文件中所有信息
[root@oldboyedu 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
our site is http://www.etiantian.org
my qq num is 49000448.
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
[] --- 匹配中括號(hào)中任意一個(gè)字符
[root@oldboyedu oldboy]# grep "ba" oldboy.txt --- 表示過濾一個(gè)字符串
I like badminton ball ,billiard ball and chinese chess!
[root@oldboyedu oldboy]# grep "[bac]" oldboy.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my god ,i am not oldbey,but OLDBOY!
過濾出所有小寫字母:
grep "[a-z]" oldboy.txt --- 過濾小寫字母
grep "[A-Z]" oldboy.txt --- 過濾大寫字母
grep "[a-zA-Z]" oldboy.txt --- 過濾所有字母
grep "[a-Z]" oldboy.txt --- 過濾所有字母
grep -i "[a-z]" oldboy.txt --- grep忽略大小寫進(jìn)行過濾
[^] --- 將指定字符信息,進(jìn)行取反過濾
[root@oldboyedu oldboy]# grep -v "[a-Z]" oldboy.txt
[root@oldboyedu oldboy]# grep "[^a-Z]" oldboy.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448.
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
系統(tǒng)擴(kuò)展正則 (高級(jí)符號(hào)) grep --> egrep/grep -E sed --> sed -r
+ --- 匹配前一個(gè)字符連續(xù)出現(xiàn)1次或者多次
# grep "0*" oldboy.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448.
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
# egrep "0+" oldboy.txt
our site is 0 http://www.etiantian.org
my qq num is 49000448.
not 4900000448.
| --- 匹配多個(gè)字符串信息
匹配oldboy和oldbey單詞信息
grep "oldb[oe]y" oldboy.txt
grep "oldb.y" oldboy.txt
egrep "oldboy|oldbey" oldboy.txt
企業(yè)應(yīng)用: 配置文件有注釋有空行, 如何進(jìn)行取消
grep -vE "$|#" /etc/services
() --- 將多個(gè)字符信息進(jìn)行整合過濾 難點(diǎn)
實(shí)現(xiàn)后項(xiàng)引用前項(xiàng)進(jìn)行替換 常用
第一個(gè)作用實(shí)踐說明
[root@oldboyedu oldboy]# grep [old] oldboy.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is 0 http://www.etiantian.org
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
[root@oldboyedu oldboy]# egrep "(old)" oldboy.txt
I am oldboy teacher!
my blog is http://oldboy.blog.51cto.com
my god ,i am not oldbey,but OLDBOY!
第二個(gè)作用: 配合sed命令使用時(shí),可以實(shí)現(xiàn)后項(xiàng)引用前項(xiàng)
echo "123456"|sed -r 's#([0-9]+)#<\1>#g'
<123456>
echo "1234567890"|sed -r 's#([0-9])#<\1>#g'
echo "789"|sed -r 's#(.)(.)(.)#<\1><\2><\3>#g'
<7><8><9>
說明: 后項(xiàng)引用前項(xiàng)只能引用1-9個(gè)小括號(hào)
{} 匹配前一個(gè)字符連續(xù)出現(xiàn)指定的次數(shù)
{n,m} --- 匹配前一個(gè)字符連續(xù)出現(xiàn)至少n次 最多m次
[root@oldboyedu oldboy]# grep -E "0{2,4}" oldboy.txt
my qq num is 49000448.
not 4900000448.
[root@oldboyedu oldboy]# grep -E "0{2,4}" oldboy.txt -o
000
0000
[root@oldboyedu oldboy]# grep -E "0{1,3}" oldboy.txt -o
0
000
000
00
[root@oldboyedu oldboy]# grep -E "0{1,3}" oldboy.txt
our site is 0 http://www.etiantian.org
my qq num is 49000448.
not 4900000448.
{n} --- 匹配前一個(gè)字符連續(xù)出現(xiàn)正好n次
[root@oldboyedu oldboy]# grep -E "0{3}" oldboy.txt
my qq num is 49000448.
not 4900000448.
[root@oldboyedu oldboy]# grep -E "0{2}" oldboy.txt
my qq num is 49000448.
not 4900000448.
{n,} --- 匹配前一個(gè)字符連續(xù)出現(xiàn)最少n次, 最多不限
{,m} --- 匹配前一個(gè)字符連續(xù)出現(xiàn)最少0次, 最多是m次
[root@oldboyedu oldboy]# grep -E "0{3,}" oldboy.txt
my qq num is 49000448.
not 4900000448.
[root@oldboyedu oldboy]# grep -E "0{,3}" oldboy.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is 0 http://www.etiantian.org
my qq num is 49000448.
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
(?) --- 匹配前一個(gè)字符連續(xù)出現(xiàn)0次或者1次
總結(jié): * + {} ?
[root@oldboyedu oldboy]# egrep "o*" test02.txt
gd
god
good
goood
gooood
[root@oldboyedu oldboy]# egrep "o+" test02.txt
god
good
goood
[root@oldboyedu oldboy]# egrep "o?" test02.txt
gd
god
good
[root@oldboyedu oldboy]# egrep "o?" test02.txt -o
o
o
o
o