linux基礎學習第七天-正則表達式及grep

2016-08-04

授課內容:

各種文本工具來查看、分析、統計文本文件(more、less、cat、cut、sort、wc、uniq、head、tail、paste、diff)

grep

正則表達式

擴展正則表達式

【】所有的文本查看、分析、統計等都是只是更改標準輸出的顯示方式,對原文件內容并沒有更改

cat [OPTION]… [FILE]…:文件查看,接受標準輸入

-n:顯示行號

-E:顯示結尾符

-A:顯示所有控制符

more [OPTIONS…] FILE…:分頁查看

[root@Centos7 ~]# more f1 f2 f3
::::::::::::::
f1
::::::::::::::
nihaoma
nizainali
cahifanlema
ddassada
::::::::::::::
f2
::::::::::::::
nihaoma
ni1zainali
cahifanlema
ddass2ada
::::::::::::::
f3
::::::::::::::
dsdasdasda
dsad
adada
asdsa

less FILE…:分頁查看,man幫助調用的就是less命令查看內容

【】 當打開多個文件時,使用如下命令在多個文件之間切換

:n – 瀏覽下一個文件

:p – 瀏覽前一個文件

more和less的區別:

 兩者都是文件查看命令,前者查看只能往后翻頁,并且看完后自動退出,后者可按n/N進行前后頁翻滾查看,同時支持搜索,看完后不會自動退出文件,需要按q退出

head [OPTION]… [FILE]…

-n#:查看文件的前#行內容

tail [OPTION]… [FILE]…

-n#:查看文件的倒數#行內容

-f: 實時跟蹤顯示文件新追加的內容,常用日志監控

cut [OPTION]… [FILE]…

-d:后面跟指定分隔符,默認是tab

-f :后面是指定的列

-c :按字符切割

paste [OPTION]… [FILE]…:合并【多個】文件同行號的列到一行顯示,cat可以合并兩個文件連續行顯示

-d:指定合并后顯示的分隔符

[root@Centos7 ~]# paste f1 f2
nihaomahenhao
nizainalizheli
chifanlemachile
[root@Centos7 ~]# paste -d* f1 f2
nihaoma*henhao
nizainali*zheli
chifanlema*chile
[root@Centos7 ~]# paste -d : f1 f2 f3
nihaoma:nihaoma:dsdasdasda
nizainali:ni1zainali:dsad
cahifanlema:cahifanlema:adada
ddassada:ddass2ada:asdsa

wc [OPTION]… [FILE]…:統計文件信息

-l:統計行數

-c:統計字節總數

-w:統計單詞總數

sort [OPTION]… [FILE]…:對文本信息進行排序顯示

-n:以數字大小進行排序

-r:反向顯示

-t:分隔符(相當于cut的-d選項)

-k:第幾列信息進行整理

uniq [OPTION]… [FILE]…:從輸入中刪除重復的前后相接的行

-c:重復行出現的次數

-d:僅顯示重復的行

常和sort 命令一起配合使用,統計相同行出現的次數:

sort userlist.txt | uniq-c

diff [OPTION]… FILES:比較【兩個】文件的不同之處

[root@Centos7 ~]# cat -n f1 f2
 1nihaoma
 2nizainali
 3cahifanlema
 4ddassada
 5nihaoma
 6ni1zainali
 7cahifanlema
 8ddass2ada
[root@Centos7 ~]# diff f1 f2
2c2
< nizainali
---
> ni1zainali
4c4
< ddassada
---
> ddass2ada
第2,4行有區別(改變)

正則表達式:由一類【特殊字符】及文本【字符】所編寫的模式,其中有些字符(元字符)不表示字符字面意義,而表示控制或通配的功能

字符分類:字符匹配、次數匹配、位置錨定、分組

基本正則表達式:

字符匹配:

.:表示任意的【一個字符】

[]:表示匹配中括號內的【任意單個】字符

[^]:表示匹配中括號外的【任意單個】字符

次數匹配:

*:表示【其前字符】的任意次數

.*:表示任意長度的任意字符,相當于通配符的*

\?:表示匹配【其前字符】一次或零次(可有可無)

\+:表示【其前字符】出現至少一次

\{m\}:表示【其前字符】出現m次

\{m,n\}:表示【其前字符】出現至少m次,最多n次

位置錨定:

^:表示其后的字符位于行首

$:表示其前的字符位于行尾

\<或\b:詞首錨定,用于單詞模式的左側

\>或\b:詞尾錨定;用于單詞模式的右側

分組:

\(spring\): 將搜索括號內的整個字符串

\1,\2,\3..:表示引用前面【第1,2,3..括號】搜索到的第一個字符【這是分組的意義所在,就是為了引用前面搜到的字符串,如果不需要引用,和沒括號的結果一樣】

[root@Centos7 ~]# grep -n "\(l..e\)" f1
1:He love his lover.
2:She like her liker.
3:He like his lover.
5:He love his lover and liker.
6:She like her liker and liker.
7:He like his lover and like.
[root@Centos7 ~]# grep -n "l..e" f1
1:He love his lover.
2:She like her liker.
3:He like his lover.
5:He love his lover and liker.
6:She like her liker and liker.
7:He like his lover and like.
[root@Centos7 ~]# grep -n "\(l..e\).*\1" f1
1:He love his lover.
2:She like her liker.
5:He love his lover and liker.
6:She like her liker and liker.
7:He like his lover and like.

擴展正則表達式:

字符匹配(和基本正則表達式一樣):

.

[]

[^]

次數匹配(與基本正則表達式相比少了“\”):

*

+

{m}

{m,n}

位置錨定(與基本正則表達式一樣):

^

$

\< \b

\> \b 

分組(與基本正則表達式相比少了“\”)

(spring)

或(基本正則表達式沒有這功能)

C|cat:表示C、cat

(C|c)at :表示Cat、cat

grep [OPTIONS] PATTERN [FILE…]:使用基本正則表達式定義的模式來過濾文本的命令

-i:忽略大小寫搜索

-o:只顯示搜索到的內容

-v:不顯示搜索到的內容 

-n:顯示行號

-E:以擴展正則表達式定義的模式搜索 

-A #:把匹配到的行以及其后#行內容一同顯示

-B #:把匹配到的行以及其前#行內容一同顯示

-C #:把匹配到的行以及其前后#行內容一同顯示

-e:實現多個選項間的邏輯or關系【相當于擴展正則表達式的‘|’】

[root@Centos7 ~]# grep -En "l(ove|ike)" f1
1:He love his lover.
2:She like her liker.
3:He like his lover.
5:He love his lover and liker.
6:She like her liker and liker.
7:He like his lover and like.
[root@Centos7 ~]# grep -e 'like' -e 'love' f1
He love his lover.
She like her liker.
He like his lover.
He love his lover and liker.
She like her liker and liker.
He like his lover and like.

原創文章,作者:麥德良,如若轉載,請注明出處:http://www.www58058.com/30449

(0)
麥德良麥德良
上一篇 2016-08-07 22:05
下一篇 2016-08-07 22:06

相關推薦

  • 特殊權限

    特殊權限 文件特殊權限 一、SUID(4) SUID:當s這個標志出現在文件所有者的x權限上時,就被稱作SUID。 SUID的功能和限制:1、僅僅對二進制程序有效; 2、執行者對程序需要X的執行權限; 3、本權限僅僅在執行該程序的過程中有效; 4、執行者將具有該程序所有者的權限。 5、SUID僅僅可以用在二進制程序上,…

    Linux干貨 2016-08-05
  • mysql備份之xtrabackup

    mysql備份之xtrabackup(建議用來備份innodb) 下載地址:https://www.percona.com/downloads/XtraBackup/ 安裝xtrabackup [root@node1 ~]# yum install percona-xtrabackup 完全備份 節點一 修改配置文件,…

    Linux干貨 2016-07-19
  • 一. DHCP,TFTP, DNS 配置

    練習在CentOS6上配置DHCP, TFTP, DNS服務 1. 首先按下圖所示搭建網絡拓撲圖 2017-07-11 151425-001.png Server1 服務器IP: 192.168.20.101/24GATEWAY: 192.168.20.2DNS: 192.168.20.2 Server2 服務器IP: 192.168.20.102/24GA…

    Linux干貨 2017-07-11
  • 磁盤管理之文件系統

                             文件系統     文件系統是操作系統用于…

    Linux干貨 2016-09-06
  • 用戶及權限管理 (Blog 1)

    用戶、權限相關概念及用戶管理類命令

    2017-11-06
  • 網絡管理命令

    網絡管理

    Linux干貨 2018-01-07
欧美性久久久久