系統(tǒng)通配符
* 匹配所有內(nèi)容
例:ls -l /oldboy/*.txt --- 匹配以.txt結(jié)尾信息進行詳細顯示
rm -rf /oldboy/* --- 刪除oldboy目錄中所有信息, 但是默認無法刪除隱藏文件
rm -f /oldboy/.old*.txt --- 刪除以old開頭 .txt結(jié)尾的所有隱藏文件
- {} --- 匹配序列信息
數(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)正則符號: grep sed awk
基礎(chǔ)正則: basic regular expression BRE
擴展正則: extended regular expression ERE
終極目標:
01. 文件test.txt
張三 110106198803076651
李四 106106199903076651
王五 oldboy
# grep -vE "[0-9]+" test.txt
王五 oldboy
文件內(nèi)容做修改
張三 110106198803076651
李四 106106199903076651
王五 10101010100101
周六 101010101010220101010
grep -E "[0-9]{18}" test.txt --- 將身份輸入不足18位的進行排除
- 基礎(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
$ --- 以什么結(jié)尾的信息
grep 'd$' /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted
說明: 如果結(jié)尾有空格信息, 過濾是會出現(xiàn)異常
利用底行模式 :set list 可以查看結(jié)尾空格信息
利用命令查看 cat -A /etc/selinux/config
問題: 將以點結(jié)尾的信息過濾出來:
grep '\.$' /etc/selinux/config
# This file controls the state of SELinux on the system.
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings insteadof enforcing.
# disabled- No SELinux policy is loaded.
# minimum - Modification of targetedpolicy. Only selectedprocesses are protected.
- \ (不屬于正則) --- 轉(zhuǎn)義符號
01. 將有特殊意義的符號, 還原本身符號意義
02. 將沒有意義的字符,變?yōu)橛幸饬x
\r \n --- 換行符
\t --- 指表符(tab)
03. 取消別名功能
[root@oldboyedu ~]# echo -e "oldboy01\noldboy02" >oldboy.txt
[root@oldboyedu ~]# cat oldboy.txt
oldboy01
oldboy02
- ^$ --- 空行信息
grep -v "^$" /etc/selinux/config
- . --- 匹配任意一個且只有一個字符
grep "^." /etc/selinux/config --- 匹配任意一個以什么開頭的字符
grep ".$" /etc/selinux/config --- 匹配任意一個以什么結(jié)尾的字符
grep "." /etc/selinux/config --- 匹配整個文件所有任意字符
總結(jié)匹配篩選文件信息:
01. 會按照行進行匹配
02. 會匹配信息貪婪特性
03. 利用grep -o可以查看匹配信息的過程
(星號)* --- 匹配前一個字符連續(xù)出現(xiàn)0次或者多次
創(chuàng)建一個測試文件:
創(chuàng)建測試文件:
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信息
.* --- 匹配文件中所有信息
[] --- 匹配中括號中任意一個字符
過濾出所有小寫字母
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忽略大小寫進行過濾
[^] --- 將指定字符信息,進行取反過濾
系統(tǒng)擴展正則 (高級符號)
grep --> egrep/grep -E
sed --> sed -r
星* --- 匹配前一個字符連續(xù)出現(xiàn)0次或者多次
-
--- 匹配前一個字符連續(xù)出現(xiàn)1次或者多次
-
| --- 匹配多個字符串信息
匹配oldboy和oldbey單詞信息
企業(yè)應(yīng)用:配置文件有注釋有空行, 如何進行取消
grep -vE "^$|^#" /etc/services
() --- 將多個字符信息進行整合過濾 難點
實現(xiàn)后項引用前項進行替換 常用
第一個作用實踐說明
第二個作用: 配合sed命令使用時,可以實現(xiàn)后項引用前項
- 解鎖: 批量創(chuàng)建用戶 (密碼是隨機密碼)
seq -w 10|sed -r 's#(.*)#useradd oldboy\1;echo 123456|passwd --stdin oldboy\1#g'|bash
- {} 匹配前一個字符連續(xù)出現(xiàn)指定的次數(shù)
{n,m} --- 匹配前一個字符連續(xù)出現(xiàn)至少n次 最多m次
{n} --- 匹配前一個字符連續(xù)出現(xiàn)正好n次
{n,} --- 匹配前一個字符連續(xù)出現(xiàn)最少n次, 最多不限
{,m} --- 匹配前一個字符連續(xù)出現(xiàn)最少0次, 最多是m次
? --- 匹配前一個字符連續(xù)出現(xiàn)0次或者1次
總結(jié): * + {} ?
* ---例子:匹配前一個字符連續(xù)出現(xiàn)0次或者多次
+ ---例子:匹配前一個字符連續(xù)出現(xiàn)1次或者多次
{} ---例子:匹配前一個字符連續(xù)出現(xiàn)指定的次數(shù)
? ---例子:匹配前一個字符連續(xù)出現(xiàn)0次或者1次
總結(jié):
通配符號: 匹配文件名稱信息
正則符號: 匹配文件內(nèi)容信息