文本處理學習小結

抽取文本的工具

文件內容:lesscat

文件截?。?/span>headtail

按列抽?。?/span>cut

按關鍵字抽取:grep

文件查看

復制標準輸入到標準輸出

文件查看命令:cat, tac,rev

cat命令:

cat [OPTION]… [FILE]…

-E: 顯示行結束符$

-n: 對顯示出的每一行進行編號

-A:顯示所有控制符

-b:非空行編號

-s:壓縮連續的空行成一行

-T:查看tab鍵

-v:顯示非打印字符

 

tac:倒看cat的內容

         用于將文件已行為單位的反序輸出,即第一行最后顯示,最后一行先顯示

1.jpg

rev命令:

rev命令將文件中的每行內容以字符為單位反序輸出,即第一個字符最后輸出,最后一個字符最先輸出,依次類推

2.jpg

分頁查看文件內容

vmore: 分頁查看文件

more [OPTIONS…] FILE…

-d: 顯示翻頁及退出提示

vless:一頁一頁地查看文件或STDIN輸出

查看時有用的命令包括:

/:往下文本搜索文本

n/N:跳到下一個or 上一個匹配

less:命令是man命令使用的分頁器

?:往上搜索 ,此時n/N跳到上一個or 下一個匹配

 

顯示文本前或后行內容

head命令:

         默認是前10

head [OPTION]… [FILE]…

-c #: 指定獲取前#字節

-n #: 指定獲取前#

-#:指定行數

Tail命令

         默認是后10

tail [OPTION]… [FILE]…

-c #: 指定獲取后#字節

-n #: 指定獲取后#

-#:指定行數

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

缺點是會占據終端資源

3.jpg

不占據終端,追蹤顯示新增加的內容在屏幕上顯示,不影響在屏幕上操作

文本處理學習小結

文本處理學習小結

文本處理學習小結

按列抽取文本cut和合并文件paste

cut命令:  

         切的是文本的列

        

cut [OPTION]… [FILE]…

-d DELIMITER: 指明分隔符,默認tab

-f FILEDS:

#: #個字段

#,#[,#]:離散的多個字段,例如1,3,6

#-#:連續的多個字段, 例如1-6

混合使用:1-3,7

-c按字符切割

文本處理學習小結

文本處理學習小結

–output-delimiter=STRING指定輸出分隔符

9.jpg

v顯示文件或STDIN數據的指定列

取passwd下的1,2,3,7列

10.jpg

paste命令:

paste 合并兩個文件同行號的列到一行

paste [OPTION]… [FILE]…

-d 分隔符:指定分隔符,默認用TAB

-s : 所有行合成一行顯示

paste f4 f5

paste -s f4 f5

11.jpg

收集文本統計數據wc

計數單詞總數、行總數、字節總數和字符總數

可以對文件或STDIN中的數據運行

使用-l來只計數行數

使用-w來只計數單詞總數

使用-c來只計數字節總數

使用-m來只計數字符總數

Ctrl –d 終止輸入

 

文本排序sort

對列排序,用什么作為分隔符的列(默認是按字符排序)

把整理過的文本顯示在STDOUT,不改變原始文件

$sort [options] file(s)

常用選項

-r執行反方向(由上至下)整理

-n執行按數字大小整理

-f選項忽略(fold)字符串中的字符大小寫

-u選項(獨特,unique)刪除輸出中的重復行

-t c選項使用c做為字段界定符

-k X選項按照使用c字符分隔的X列來整理能夠使用多次

         將用戶按照UID從小到大排序

12.jpg

uniq

uniq命令:從輸入中刪除重復的前后相接的行

uniq [OPTION] … [FILE] …

-c: 顯示每行重復出現的次數;

-d: 僅顯示重復過的行;

-u: 僅顯示不曾重復的行;

連續且完全相同方為重復

常和sort 命令一起配合使用:

sort f2 | uniq -c

13.jpg

統計/etc/init.d/functions每個單詞出現的字數

14.jpg

Linux上文本處理三劍客

grep:文本過濾(模式:pattern)工具;

             grep, egrep, fgrep(不支持正則表達式搜索)

sedstream editor,文本編輯工具;

awkLinux上的實現gawk,文本報告生成器;

grep

grep: Global search REgularexpression and Print out the line.

作用:文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;打印匹配到的行;

模式:由正則表達式字符及文本字符所編寫的過濾條件

grep [OPTIONS]  PATTERN  [FILE…]

grep root /etc/passwd

15.jpg

grep "$USER" /etc/passwd(變量)

16.jpg

grep '$USER' /etc/passwd

17.jpg

grep `whoami` /etc/passwd(命令替換)

18.jpg

grep命令選項

–color=auto: 對匹配到的文本著色顯示;

alias grep='grep –color=auto'

-v: 顯示不能夠被pattern匹配到的行;(取反)

1.jpg

-i: 忽略字符大小寫

2.jpg

-n:顯示匹配的行號

3.jpg

-c: 統計匹配的行數

4.jpg

-o: 僅顯示匹配到的字符串;

5.jpg

-q: 靜默模式,不輸出任何信息

只關心命令執行成功與否,不顯示信息

6.jpg

7.jpg

-A #after, #

顯示匹配到的并且顯示匹配到的后三行

1.jpg

-B #: before, #

2.jpg

-C #context, 前后各#

3.jpg

-e:實現多個選項間的邏輯or關系

grep –e ‘cat ’ -e ‘dog’ file

或者的關系

4.jpg

并且的關系

5.jpg

-w:整行匹配整個單詞

-E:使用ERE(=egrep),即擴展正則表達式

正則表達式(1

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

程序支持:grep, vim, less,nginx

分兩類:

基本正則表達式:BRE

擴展正則表達式:ERE

grep -E, egrep

正則表達式引擎:

采用不同算法,檢查處理正則表達式的軟件模塊

PCREPerl Compatible Regular Expressions

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

man 7 regex

基本正則表達式元字符

字符匹配:

. :匹配任意單個字符;

1.jpg

[] :匹配指定范圍內的任意單個字符

2.jpg

[^] :匹配指定范圍外的任意單個字符

3.jpg

[:digit:][:lower:]、[:upper:][:alpha:]、[:alnum:][:punct:]、[:space:]

正則表達式(2

匹配次數:用在要指定次數的字符后面,用于指定前面的字符要出現的次數

*:匹配前面的字符任意次,包括0

      *號表示*號前面的字符重復不確定次數,包括0此和n次

4.jpg

貪婪模式:盡可能長的匹配,只要出現t就可以匹配

5.jpg

.*:任意長度的任意字符

\?:匹配其前面的字符01

a\?:表示a有一個或者沒有

\+:匹配其前面的字符至少1

      a\+:a出現一次以上

\{m\}:匹配前面的字符m

\{m,n\}:匹配前面的字符至少m次,至多n

\{,n\}:匹配前面的字符至多n

\{m,\}:匹配前面的字符至少m

 

正則表達式(3

位置錨定:定位出現的位置

^:行首錨定,用于模式的最左側

以root開頭的行

6.jpg

$:行尾錨定,用于模式的最右側

以bash結尾的行

7.jpg

^PATTERN$: 用于模式匹配整行

^$: 空行(行內沒有任何字符)

^[[:space:]]*$ :空白行(行內可有空格,tab字節)

 

[[:space:]]:包含tab鍵和空白行

8.jpg

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

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

9.jpg

 

\<PATTERN\>:匹配整個單詞

 

正則表達式(4

分組:\(\):將一個或多個字符捆綁在一起,當作一個整體進行處理,

如:\(root\)\+  表示root重復一次以上

分組括號中的模式匹配到的內容會被正則表達式引擎記錄于內部的變量中,這些變量的命名方式為: \1, \2, \3, …

\1: 從左側起,第一個左括號以及與之匹配右括號之間的模式所匹配到的字符;

實例:\(string1\+\(string2\)*\)

\1: string1\+\(string2\)*

\2: string2

 

\(r..t\).*\1 中的1表示匹配第一個分組

1.jpg

符合第二個分組條件的組

2.jpg

3.jpg

后向引用:引用前面的分組括號中的模式所匹配字符(而非模式本身)

4.jpg

正則表達式(5

正則表達式元字符

定義

^

行首

$

行尾

.

任意單一字符

[]

[]內任意單一字符

[^]

除[]內任意單一字符

*

*前面字符重復不確定次數

\+

\+前面字符重復一次以上不確定次數

\?

?前面字符重復0或1次

\

轉義符

.*

任意長度字符

\{n\}

前面字符重復n次

\{n,\}

前面字符重復n次以上

\{m,n\}

前面字符重復m次和n次之間

正則表達式(6

正則表達式元字符

定義

[:alpha:]

所有字母,包括大、小寫

[:alnum:]

所有字母和數字

[:upper:]

所有大寫字母

[:lower:]

所有小寫字母

[:digit:]

所有數字

[:punct:]

所有標點符號

[:space:]

空格和Tab

 

egrep及擴展的正則表達式

egrep= grep -E

egrep[OPTIONS] PATTERN [FILE…]

擴展正則表達式的元字符:

字符匹配:

. 任意單個字符

[] 指定范圍的字符

[^] 不在指定范圍的字符

次數匹配:

*:匹配前面字符任意次

?: 01

+1次或多次

{m}:匹配m

{m,n}:至少m,至多n

位置錨定:

^ :行首

$ :行尾

\<, \b :語首

\>, \b :語尾

分組:

()

后向引用:\1, \2, …

或者:

a|b

C|cat: Ccat

(C|c)at:Catcat

原創文章,作者:Mr.Lee,如若轉載,請注明出處:http://www.www58058.com/30319

(0)
Mr.LeeMr.Lee
上一篇 2016-08-07
下一篇 2016-08-07

相關推薦

  • N26第一周作業

    第一周作業   1. 描述計算機的組成及其功能。   計算機主要由處理器(CPU)、存儲器、輸入設備、輸出設備。 CPU由運算器、控制器、寄存器、緩存器組成,提供運算。 存儲器即內存,RAM(Random Access Memory),內存為cpu運算時提供數據存儲。 Input:用戶下指令的設備,使計算機能夠與用戶進行交互。 Outpu…

    Linux干貨 2017-01-03
  • mysql備份與恢復

    1、mysqldump進行mysqll數據庫的備份與還原 命令說明: Schema和數據存儲一起、巨大的SQL語句、單個巨大的備份文件 mysqldump: 客戶端,通過mysql協議連接至mysqld; mysqldump [options] [db_name [tbl_name …]] shell> mysqldump [options] db…

    Linux干貨 2017-03-27
  • 8.5-文本處理工具(命令篇)

     1、文件查看命令: cat, tac,rev cat [OPTION]… [FILE]…     -E: 顯示行結束符$     -n: 對顯示出的每一行進行編號     -A:顯…

    Linux干貨 2016-08-07
  • Linux用戶和組管理類命令以及文本處理工具的各種實例

    列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 取出最后登錄到當前系統的用戶的相關信息。 取出當前系統上被用戶當作其默認shell的最多的那個shell。 將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxusers.txt文件中。 取出當前主機的IP地址,提示:對i…

    2018-03-13
  • 軟raid實現raid5

    現在Linux系統有磁盤情況如下 現在從sda,sdb,sdc,sdd 分區取出10G 的空間做raid5. 第一步:建立分區 現在執行fdisk ?/dev/sd* 命令分區沖這四個磁盤劃分10G分區 分別是sda6,sdb1,sdc1,sdd1。 具體操作如下: 分區完之后,執行#partx -a /dev/sd* ?讓分區生效。具體效果如下: 分區完成…

    2017-12-06
  • python第二周

    #python數據結構(list) ## 分類 數值型:int、float、complex、bool 序列對象:字符串 str ? 列表 ?list ? 元組 ?tuple 鍵值對: 集合 set ? 字典 dict   ## 數字的處理函數 math.e ?math.pi: 自如常數和π round(): ?四舍六入五去偶 floor(): ?取…

    Linux干貨 2017-09-23
欧美性久久久久