目錄php
1.系統特殊符號java
2.系統通配符號python
3.正則符號mysql
1.系統特殊符號linux
//系統特殊符號 1.管道符號| 2.引號符號"" '' 1)"" 2)'' 3.重定向符號>/1> 2> >>/1>> 2>> 4.路徑信息符號 $OLDPWD 5.邏輯符號&& || 1)&& 2)|| 1.管道符號(前一個命令執行結果交給後面命令處理) [root@lbz01 lsn]# find /lbz -type f -name "*.txt" |xargs -i cp {} /lsn //將找到的信息放到cp 和 最終目錄中間 #xargs: 將信息進行分組顯示 [root@lbz01 lsn]# find /lbz -type f -name "*.txt" |xargs cp -t /lsn //利用cp指明誰是數據最終保存的目錄信息 2.引號符號 [root@lbz01 lbz]# echo "lbz $LANG $lsn" 1)"" #"" 和單引號功能相似 但對特殊信息會作解析 lbz en_US.UTF-8 123 [root@lbz01 lbz]# echo 'lbz $LANG $lsn' 2)'' lbz $LANG $lsn 補充: ``($()) 將引號中的命令先執行,將執行結果交給引號外面的命令進行處理 沒有引號 和雙引號功能相似 可是能夠直接識別通配符信息 3.重定向符號 #>/1> 標準輸出重定向符號 2> 錯誤輸出重定向符號 >>/1>> 標準輸出追加劇定向符號 2>> 錯誤輸出追加劇定向符號 方法一: 將正確和錯誤信息同時保留到一個文件 [root@lbz lbz]# echo lbz >>/lbz/info.log 2>>/lbz/info.log [root@lbz lbz]# cho lbz >>/lbz/info.log 2>>/lbz/info.log [root@lbz lbz]# cat /lbz/info.log lbz -bash: cho: command not found 方法二: 將正確和錯誤信息同時保留到一個文件 [root@lbz lbz]# echo lbz &>/lbz/info.log [root@lbz lbz]# cat /lbz/info.log lbz [root@lbz lbz]# cho lbz &>/lbz/info.log [root@lbz lbz]# cat /lbz/info.log -bash: cho: command not found 方法三: 將正確和錯誤信息同時保留到一個文件 [root@lbz lbz]# echo lbz >/lbz/info.log 2>&1 [root@lbz lbz]# cat /lbz/info.log lbz [root@lbz lbz]# cho lbz >/lbz/info.log 2>&1 [root@lbz lbz]# cat /lbz/info.log -bash: cho: command not found 4.路徑信息符號 #../ 上一級目錄 ./ 當前路徑 ~ 返回到家目錄 - 兩個目錄之間進行快速切換 [root@lbz01 lbz]# cd /tmp [root@lbz01 tmp]# cd $OLDPWD [root@lbz01 lbz]# cd $OLDPWD [root@lbz01 tmp]# echo $OLDPWD /lbz [root@lbz01 tmp]# cd /lbz [root@lbz01 lbz]# echo $OLDPWD /tmp 5.邏輯符號 [root@lbz01 lbz]# mkdi /lbz;touch /lbzz/lsny.txt -bash: mkdi: command not found touch: cannot touch ‘/lbzz/lsny.txt’: No such file or directory [root@lbz01 lbz]# mkdi /lbz && touch /lbz/lsny.txt 1)&& #與邏輯符號 前一個命令執行成功, 再執行後面的命令 -bash: mkdi: command not found [root@lbz01 lbz]# mkdir /alex && touch /alex/lbz.txt [root@lbz01 lbz]# ll /alex/lbz.txt -rw-r--r--. 1 root root 0 Jan 18 20:07 /alex/lbz.txt [root@lbz01 lbz]# rmx /lsn/lbz.txt || echo "failed" >>/lsn/error.txt 2)|| #或邏輯符號 前一個命令執行失敗, 再執行後面的命令 -bash: rmx: command not found [root@lbz01 lbz]# cat /lsn/error.txt failed [root@lbz01 lbz]# rm /lsn/lbz.txt || echo "failed" >>/lsn/error.txt [root@lbz01 lbz]# cat /lsn/error.txt failed
2.系統通配符號sql
//系統通配符號(利用通配符號匹配文件名稱信息) 1. * 模糊匹配全部內容 2. {} 生成序列信息 (生成一行序列) 1) 生成連續序列 2) 生成不連續序列 3) 生成組合序列 4) 快速備份文件數據方法 1. * 模糊匹配全部內容 [root@lbz01 ~]# find /lbz -type f -name "*.txt" 1. * 模糊匹配全部內容 /lbz/ok.txt /lbz/error.txt /lbz/lbz.txt /lbz/alex.txt /lbz/lsn.txt /lbz/lsny.txt [root@lbz01 ~]# ll /lbz/*.txt -rw-r--r--. 1 root root 0 Jan 18 20:28 /lbz/alex.txt -rw-r--r--. 1 root root 0 Jan 18 20:00 /lbz/error.txt lrwxrwxrwx. 1 root root 12 Jan 18 09:42 /lbz/lbz_soft_link.txt -> /lbz/lbz.txt -rw-r--r--. 1 root root 0 Jan 18 20:27 /lbz/lbz.txt -rw-r--r--. 1 root root 0 Jan 18 23:38 /lbz/lsn.txt -rw-r--r--. 1 root root 0 Jan 18 23:38 /lbz/lsny.txt -rw-r--r--. 1 root root 4 Jan 18 20:00 /lbz/ok.txt 2. {} 生成序列信息 (生成一行序列) [root@lbz01 ~]# echo {1..10} 1) 生成連續序列 1 2 3 4 5 6 7 8 9 10 [root@lbz01 ~]# echo {1..10..2} 2) 生成不連續序列 1 3 5 7 9 [root@lbz01 ~]# echo {A,B}{01,02} 3) 生成組合序列 A01 A02 B01 B02 [root@lbz01 lbz]# echo /lbz/lbz.txt{,.bak} 4) 快速備份文件數據方法 /lbz/lbz.txt /lbz/lbz.txt.bak [root@lbz01 lbz]# cp /lbz/lbz.txt{,.bak}
3.正則符號
1. 利用正則符號匹配文件內容信息
2. 正則符號常常出如今各類開發語言中, python java php
3. 正則符號常常被三劍客命令使用
1.基礎正則符號: basic regular expression BREexpress
//基礎正則符號 1.^以什麼開頭的信息 2.$以什麼結尾的信息 [root@lbz01 ~]# cat >>/lbz/lbz.txt<<EOF //建立測試環境 > # lbz-sz-01 > lbz-linux > lbz-python-linux > > # lbz-sh > lbz-linux > lbz-python-linux > > # lbz-bj > lbz-linux > java > mysql > go > python > EOF [root@lbz01 ~]# grep "^lbz" /lbz/lbz.txt 1.將以lbz開頭的行找出來 lbz-linux lbz-python-linux lbz-linux lbz-python-linux lbz-linux [root@lbz01 ~]# grep "linux$" /lbz/lbz.txt 2.將以lbz結尾的行找出來 lbz-linux lbz-python-linux lbz-linux lbz-python-linux lbz-linux [root@lbz01 ~]# grep -v "^$" /lbz/lbz.txt // 將所有內容顯示,但不要顯示空行 # lbz-sz-01 lbz-linux lbz-python-linux # lbz-sh lbz-linux lbz-python-linux # lbz-bj lbz-linux java mysql go python
//基礎正則符號 1. .符號 2. *星符號 3. .*點星結合 4. \轉義符號 5. []括號符號 6. [^]括號和尖號組合 [root@lbz01 ~]# cat >>~/lbz_test.txt<<EOF //建立實驗環境 > I am lbz teacher! > I teach linux. > > I like badminton ball ,billiard ball and chinese chess! > my blog is http://lbz.blog.51cto.com > our site is http://www.etiantian.org > my qq num is 49000448. > > not 4900000448. > my god ,i am not lez,but LBZ! > EOF [root@lbz01 ~]# grep "." ~/lbz_test.txt (-o) 1. .符號 #. 匹配任意一個字符,且只有一個字符(-o顯示匹配過程) I am lbz teacher! I teach linux. I like badminton ball ,billiard ball and chinese chess! my blog is http://lbz.blog.51cto.com our site is http://www.etiantian.org my qq num is 49000448. not 4900000448. my god ,i am not lez,but LBZ! [root@lbz01 ~]# grep "0*" ~/lbz_test.txt 2. *符號 #匹配前一個字符連續出現了0次或者屢次 I am lbz teacher! I teach linux. I like badminton ball ,billiard ball and chinese chess! my blog is http://lbz.blog.51cto.com our site is http://www.etiantian.org my qq num is 49000448. not 4900000448. my god ,i am not lez,but LBZ! [root@lbz01 ~]# grep "^m.*m$" ~/lbz_test.txt 3. .*點星結合 # .* 匹配任意全部信息 my blog is http://lbz.blog.51cto.com [root@lbz01 ~]# grep "^m.*o" ~/lbz_test.txt //貪婪匹配 my blog is http://lbz.blog.51cto.com my god ,i am not lez,but LBZ! [root@lbz01 ~]# grep "^m.*to" ~/lbz_test.txt //指定具體信息阻止貪婪匹配 my blog is http://lbz.blog.51cto.com [root@lbz01 ~]# echo -e "lbz01\nlbz02\nlbz03" 4. \轉義符號 \做用: 01. 將有特殊意義符號,轉義成普通訊息進行識別 02. 將沒有意義的信息轉義爲有特殊意義的信息 \n 換行符號 \t 製表符號 lbz01 lbz02 lbz03 [root@lbz01 ~]# grep ".$" lbz_test.txt //使用轉義符號前 I am lbz teacher! I teach linux. I like badminton ball ,billiard ball and chinese chess! my blog is http://lbz.blog.51cto.com our site is http://www.etiantian.org my qq num is 49000448. not 4900000448. my god ,i am not lez,but LBZ! [root@lbz01 ~]# grep "\.$" lbz_test.txt //使用轉義符號後 I teach linux. my qq num is 49000448. not 4900000448. [root@lbz01 ~]# grep "l[be]z" lbz_test.txt 5. []括號符號 #[] 匹配多個字符信息 I am lbz teacher! my blog is http://lbz.blog.51cto.com my god ,i am not lez,but LBZ! [root@lbz01 ~]# grep "^[Im]" lbz_test.txt I am lbz teacher! I teach linux. I like badminton ball ,billiard ball and chinese chess! my blog is http://lbz.blog.51cto.com my qq num is 49000448. my god ,i am not lez,but LBZ! [root@lbz01 ~]# grep "[abc]" lbz_test.txt 6. [^]括號和尖號組合 #[^] 排除符號 I am lbz teacher! I teach linux. I like badminton ball ,billiard ball and chinese chess! my blog is http://lbz.blog.51cto.com our site is http://www.etiantian.org my god ,i am not lez,but LBZ! [root@lbz01 ~]# grep "[^abc]" lbz_test.txt I am lbz teacher! I teach linux. I like badminton ball ,billiard ball and chinese chess! my blog is http://lbz.blog.51cto.com our site is http://www.etiantian.org my qq num is 49000448. not 4900000448. my god ,i am not lez,but LBZ!
2.擴展正則符號: extended regular expression EREbash
//擴展正則符號 默認 grep sed不能直接識別 grep 提高本身 -- egrep/grep -E sed 提高本身 -- sed -r 1. +號符號:+ 2. 豎線符號:| 3. 括號符號:() 4. 括號符號:{} 5. 問號符號:? 1. +號符號:+ [root@lbz01 ~]# cat lbz_test.txt //實驗環境 I am lbz teacher! I teach linux. I like badminton ball ,billiard ball and chinese chess! my blog is http://lbz.blog.51cto.com our site is http://www.etiantian.org my qq num is 49000448. not 4900000448. my god ,i am not lez,but LBZ! [root@lbz01 ~]# egrep "0+" lbz_test.txt 1.+號符號 #+:匹配前一個字符連續出現了1次或者屢次 my qq num is 49000448. not 4900000448. [root@lbz01 ~]# egrep "0+" lbz_test.txt -o 000 00[root@lbz01 ~]# grep -Ev "0+" lbz_test.txt //排除內容 I am lbz teacher! I teach linux. I like badminton ball ,billiard ball and chinese chess! my blog is http://lbz.blog.51cto.com our site is http://www.etiantian.org my god ,i am not lez,but LBZ! 000 2. 豎線符號:| [root@lbz01 ~]# grep -E "lbz|lez" lbz_test.txt 2. 豎線符號:| #|:而且符號,用於匹配多個信息 I am lbz teacher! my blog is http://lbz.blog.51cto.com my god ,i am not lez,but LBZ! 3. 括號符號:() [root@lbz01 ~]# grep -E "l(be)z" lbz_test.txt 3. 括號符號:() #():指定信息進行總體匹配 [root@lbz01 ~]# grep -E "l(b|e)z" lbz_test.txt I am lbz teacher! my blog is http://lbz.blog.51cto.com my god ,i am not lez,but LBZ! #():進行後項引用前項使用: sed命令替換功能 [root@lbz01 ~]# echo lbz{01..10}|xargs -n 1|sed -r 's#(.*)#useradd\1#g' useraddlbz01 useraddlbz02 useraddlbz03 useraddlbz04 useraddlbz05 useraddlbz06 useraddlbz07 useraddlbz08 useraddlbz09 useraddlbz10 [root@lbz01 ~]# seq -w 10|sed -r 's#(.*)#useradd lbz\1;echo 123456|passwd --stdin lbz\1#g' //批量建立用戶 lbz01..lbz10,並給每一個用戶設置密碼信息,默認初始化密碼(123456) useradd lbz01;echo 123456|passwd --stdin lbz01 useradd lbz02;echo 123456|passwd --stdin lbz02 useradd lbz03;echo 123456|passwd --stdin lbz03 useradd lbz04;echo 123456|passwd --stdin lbz04 useradd lbz05;echo 123456|passwd --stdin lbz05 useradd lbz06;echo 123456|passwd --stdin lbz06 useradd lbz07;echo 123456|passwd --stdin lbz07 useradd lbz08;echo 123456|passwd --stdin lbz08 useradd lbz09;echo 123456|passwd --stdin lbz09 useradd lbz10;echo 123456|passwd --stdin lbz10 [root@lbz01 ~]# echo 123456|sed -r 's#([1-6]+)#<\1>#g' //將輸出的信息echo 123456 ==> 轉換爲 <123456>進行顯示 <123456> [root@lbz01 ~]# echo 123456|sed -r 's#(12)(34)(56)#<\1><\2><\3>#g' #echo 123456 ==> 轉換爲 <12><34><56>進行顯示 <12><34><56> [root@lbz01 ~]# echo 123456|sed -r 's#(12)(34)(56)#<\1><><\3>#g' <12><><56> [root@lbz01 ~]# echo 123456|sed -r 's#(12)(34)(56)#<\1><\3><\3>#g' <12><56><56> [root@lbz01 ~]# echo 123456|sed -r 's#(..)(..)(..)#<\1><\2><\3>#g' <12><34><56> 4. 括號符號:{} #能夠指定字符連續匹配的次數 4.括號符號:{} [root@lbz01 ~]# grep -E "0{2,3}" lbz_test.txt #第一種狀況: x{n,m} 表示前一個字符至少連續出現n次,最多出現m次 my qq num is 49000448. not 4900000448. [root@lbz01 ~]# grep -E "0{2,3}" lbz_test.txt -o 000 000 00 [root@lbz01 ~]# grep -E "0{2}" lbz_test.txt #第二種狀況: x{n} 表示前一個字符正好連續出現了n次 my qq num is 49000448. not 4900000448. [root@lbz01 ~]# grep -E "0{2}" lbz_test.txt -o 00 00 00 [root@lbz01 ~]# grep -E "0{2,}" lbz_test.txt #第三種狀況: x{n,} 表示前一個字符至少連續出現n次,最多出現多少次不限 my qq num is 49000448. not 4900000448. [root@lbz01 ~]# grep -E "0{2,}" lbz_test.txt -o 000 00000 [root@lbz01 ~]# grep -E "0{,2}" lbz_test.txt #第四種狀況: x{,m} 表示前一個字符至少連續出現0次,最多出現m次 I am lbz teacher! I teach linux. [root@lbz01 ~]# grep -E "0{,2}" lbz_test.txt -o 00 0 00 00 0 5. 問號符號:? 定義匹配前一個字符出現0或者1次 5.問號符號:? [root@lbz01 ~]# cat >>lbz_test03.txt<<EOF //建立測試環境 > gd > god > good > goood > gooood > EOF [root@lbz01 ~]# egrep "o?" lbz_test03.txt gd god good goood gooood [root@lbz01 ~]# egrep "o?" lbz_test03.txt -o o o o o o o o o o o 補充:想讓grep sed命令能夠直接識別擴展正則 [root@lbz01 ~]# grep "o\+" lbz_test03.txt god good goood gooood [root@lbz01 ~]# echo 123456|sed "s#\(..\)\(..\)\(..\)#<\1><\2><\3>#g" <12><34><56> //區分: * 匹配前一個字符出現0次或者屢次 + 匹配前一個字符出現1次或者屢次 {} 匹配前一個字符指定出現多少次,至少0次 ? 匹配前一個字符出現0次或者1次 補充:利用ip address show eth0只把IP地址信息顯示出來 [root@lbz01 ~]# ip a s eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UPgroup default qlen 1000 link/ether 00:0c:29:9b:9b:9c brd ff:ff:ff:ff:ff:ff inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 fe80::f36b:6d73:ec43:617c/64 scope link noprefixroute valid_lft forever preferred_lft forever [root@lbz01 ~]# ip a s eth0|grep "[0-9].[0-9].[0-9].[0-9]" inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0 [root@lbz01 ~]# ip a s eth0|grep "[0-9]+.[0-9]+.[0-9]+.[0-9]+" [root@lbz01 ~]# ip a s eth0|egrep "[0-9]+.[0-9]+.[0-9]+.[0-9]+" inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0 [root@lbz01 ~]# ip a s eth0|egrep "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0 [root@lbz01 ~]# ip a s eth0|egrep "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" -o 10.0.0.200 10.0.0.255 [root@lbz01 ~]# ip a s eth0|egrep "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" -o|head -1 10.0.0.200 [root@lbz01 ~]# ip a s eth0|egrep "([0-9]+\.)" inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0 [root@lbz01 ~]# ip a s eth0|egrep "([0-9]+\.)" -o 10. 0. 0. 10. 0. 0. [root@lbz01 ~]# ip a s eth0|egrep "([0-9]+\.){3}[0-9]+" -o 10.0.0.200 10.0.0.255 [root@lbz01 ~]# ip a s eth0|egrep "([0-9]+\.?){4}" -o 1500 1000 10.0.0.200 10.0.0.255 [root@lbz01 ~]# ip a s eth0|egrep "([0-9]+\.?){4}" 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UPgroup default qlen 1000 inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0 [root@lbz01 ~]# ip a s eth0|egrep "([0-9]+\.?){4}"|head -3 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UPgroup default qlen 1000 inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0 [root@lbz01 ~]# ip a s eth0|egrep "([0-9]+\.?){4}"|head -3|tail -1 inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0 [root@lbz01 ~]# ip a s eth0|egrep "([0-9]+\.?){4}" -o|head -3|tail -1 10.0.0.200
問題及反思:測試
實驗環境:spa
[root@lbz01 ~]# cat lbz_test.txt
I am $lbz teacher!
I \teach \linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://lbz.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448.
not 4900000448.
my god ,i am not lez,but LBZ!
01. 文件中有\撬棍信息,如何進行過濾
[root@lbz01 ~]# grep '\' lbz_test.txt
grep: Trailing backslash
[root@lbz01 ~]# grep '\\' lbz_test.txt
I \teach \linux.
02. 文件中有$符號, 是識別變量, 仍是識別普通符號
[root@lbz01 ~]# grep '$lbz' lbz_test.txt
I am $lbz teacher!
[root@lbz01 ~]# grep '\$lbz' lbz_test.txt
I am $lbz teacher!
總結:
系統特殊符號 |
||
符號 |
含義 |
語法 |
|
|
前一個命令執行結果交給後面命令處理 |
find /lbz -type f -name "*.txt" |xargs -i cp {} /lsn |
「」 |
對特殊信息會作解析 |
echo "lbz $LANG $lsn" |
‘’ |
所見及所得 |
echo 'lbz $LANG $lsn' |
>/1 |
標準輸出重定向符號 |
|
2> |
錯誤輸出重定向符 |
|
>>/1>> |
標準輸出追加劇定向符號 |
|
2> |
錯誤輸出追加劇定向符 |
|
../ |
上一級目錄 |
|
./ |
當前路徑 |
|
~ |
返回到家目錄 |
|
- |
兩個目錄之間進行快速切換 |
|
$OLDPWD |
上一級目錄 |
cd $OLDPWD |
&& |
與邏輯符號 前一個命令執行成功, 再執行後面的命令 |
mkdir /alex && touch /alex/lbz.txt |
|| |
或邏輯符號 前一個命令執行失敗, 再執行後面的命令 |
rmx /lsn/lbz.txt || echo "failed" >>/lsn/error.txt |
系統通配符號 |
||
* |
模糊匹配全部內容 |
ll /lbz/*.txt |
{} |
生成序列信息 (生成一行序列) |
echo {1..10} |
基礎正則符號 |
|
|
符號 |
含義 |
語法 |
^ |
以什麼開頭的信息進行匹配 |
grep "^lbz" /lbz/lbz.txt
|
$ |
以什麼結尾的信息進行匹配 |
grep "linux$" /lbz/lbz.txt |
^$ |
表示匹配空行信息 |
grep -v "^$" /lbz/lbz.txt(-v排除內容) |
. |
匹配任意一個且只有一個字符 |
grep "." ~/lbz_test.txt |
* |
匹配前一個字符連續出現0次或者屢次 |
grep "0*" ~/lbz_test |
.* |
匹配全部任意信息 |
grep "^m.*m$" ~/lbz_test.txt |
\ |
將有意義的字符信息,轉義成普通字符進行識別 |
grep "\.$" lbz_test.txt |
|
將沒有意義的字符信息轉成有意義的字符 |
\n \r \t |
[] |
匹配多個字符信息,多個字符匹配時,是或者的關係 |
grep "l[be]z" lbz_test.txt |
[^] |
對匹配的字符信息進行排除 |
grep "[^abc]" lbz_test.txt |
擴展正則符號 grep命令識別擴展正則: egrep -E |
||
+ |
匹配前一個字符連續出現1次或者屢次 |
egrep "0+" lbz_test.txt |
| |
利用豎線能夠匹配多個字符串信息 |
grep -E "lbz|lez" lbz_test.txt |
() |
將多個字符信息彙總成總體,進行過濾 |
grep -E "l(be)z" lbz_test.txt |
{} |
指定匹配前一個字符連續出現了多少次 |
|
{n,m} |
至少連續n次,最多連續m次 |
grep -E "0{2,3}" lbz_test.txt - |
{n} |
匹配只連續n次的信息 |
grep -E "0{2}" lbz_test.txt |
{n,} |
至少連續n次,最多不限 |
grep -E "0{2,}" lbz_test.txt |
{,m} |
至少連續0次,最多m次 |
grep -E "0{,2}" lbz_test.txt |
? |
匹配前一個字符連續出現0次或者1次 |
egrep "o?" lbz_test03.txt |
版權屬於:木丫頭
轉載必須得聲明