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