Linux系統上的文件處理工具

Linux系統上的文件處理工具

我們都知道在計算機中,存在大量的文件,這些文件中包含大量的信息??墒怯行r候,為了工作的效率,我們在茫茫信息中提取出我們所需要的信息,這樣的技能就顯得尤為重要。Linux系統上為我我們提供了多種多樣的文本處理工具,下面我們來簡單說一下。

查看文件內容我們可以使用less命令,cat命令,more命令等等

cat

cat [OPTION]… [FILE]…

-E: 顯示行結束符$

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

-A:顯示所有控制符

-b:非空行編號

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

cat命令是把整個目標文件的內容整個打印出來,如果我們遇到文件非常龐大的情況,我們可以使用less和more來進行查看

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

查看時有用的命令包括:

/keyword 關鍵字查詢

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

less命令其實就是man命令使用的分頁器

more:分頁查看文件

more [OPTIONS…] FILE…

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

如果我們想要顯示文本前或后n行內容

head

head [OPTION]… [FILE]…

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

-n #: 指定獲取前#行

-#:指定行數

tail

tail

tail [OPTION]… [FILE]…

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

-n #: 指定獲取后#行

-#:

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

如果我們想要在使用-f選項的同時,進行其他工作,可以在最后加上&符號,將其調到后臺運行。

按列抽取文本

cut

cut [OPTION]… [FILE]…

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

-f FILEDS:

#: 第#個字段

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

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

混合使用:1-3,7

-c 按字符切割

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

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

cut -d:-f1 /etc/passwd

cat /etc/passwd | cut-d:-f7

cut -c2-5 /usr/share/dict/words

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

paste [OPTION]… [FILE]…

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

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

paste f1 f2 

paste -s f1 f2

有時候我們需要對文本進行分析

wc:收集文本統計數據

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

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

例如:$wcstory.txt

39 237 1901 story.txt

行數 字數 字符數

使用 -l 來只計數行數

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

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

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

sort:文本排序

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

$sort [options] file(s)

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

-n 執行按數字大小整理

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

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

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

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

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

uniq[OPTION]… [FILE]…

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

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

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

連續且完全相同方為重復

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

sort userlist.txt | uniq-c

linux上文本處理三劍客:

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

grep:基本正則表達式,-E,-F

egrep:擴展正則表達式,-G,-F

fgrep:不支持正則表達式

sed:stream editor,流編輯器;文本編輯器工具;

awk:linux上的實現為gawk,文本報告生成器(格式化文本);

grep:Global search REgularexpression and Print out the line.

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

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

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

正則表達式分為兩類:

基本正則表達式:BRE

擴展正則表達式: ERE

grep:

grep [OPTIONS] PATTERN [FILE…]

OPTIONS:

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

    -i:ignorecase,忽略字符的大小寫;

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

    -v, –invert-match:顯示不能被模式匹配到的行;

    -E:支持使用擴展的正則表達式元字符;

    -q, –quiet, –silent:靜默模式,既不輸出任何信息;

    -A#:after,后#行

    -B#:before,前#行

    -C#:context,前后各#行

說到這里我們就非常有必要說一下正則表達式

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

基本正則表達式元字符:

字符匹配

  .:匹配任意單個字符

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

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

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

    匹配次數:用在要指定其出現的次數的字符的后面,用于限制其前面字符出現的次數;默認工作于貪婪模式

    *:匹配其前面的字符任意次:0.1.多次;

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

    /?:匹配其前面的字符0次或1次;既其前面的字符是可有可無的;

    \+:匹配其前面的字符1次或多次;既其前面的字符要出現至少1次;

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

    \{0,n}:至多n次

    \{m,}:至少m次

    位置錨定:

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

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

    ^PATTERN$:用于PATTERN來匹配整行;

    ^$:空白行

    ^[[:space:]]*$:空行或包含空白字符的行;

    單詞:非特殊字符組成的連續字符(字符串)都稱為單詞;

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

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

    \<PATTERN>:匹配完整單詞;

    分組及引用

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

    Note:分組括號中的模式匹配到的內容會被正則表達式引擎自動記錄于內部的變量中,這些變量為:

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

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

    \3:

    …

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

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

\2: string2

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

擴展正則表達式:

egrep= grep -E

egrep [OPTIONS] PATTERN [FILE…]

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

字符匹配:

. 任意單個字符

[] 指定范圍的字符

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

次數匹配:

*:匹配前面字符任意次

?: 0或1次

+:1次或多次

{m}:匹配m次

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

位置錨定:

^ :行首

$ :行尾

\<, \b :語首

\>, \b :語尾

分組:

()

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

例:

a|b

C|cat: C或cat

(C|c)at:Cat或cat

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

(0)
song_linuxsong_linux
上一篇 2016-08-05
下一篇 2016-08-05

相關推薦

  • 馬哥網絡教育班21期-第一周課程練習

      一、計算機的組成及其功能 1.1計算機的組成      1946年美籍匈牙利科學家馮·諾依曼提出存儲程序原理,把程序本身當作數據來對待,程序和該程序處理的數據用同樣的方式存儲,并確定了存儲程序計算機的五大組成部分,分別為運算器、控制器、存儲器、輸入設備和輸出設備。 1.2計算機的組成 控制器(Contro…

    Linux干貨 2016-07-12
  • 壓縮和歸檔——釋放你的磁盤空間

    壓縮和解壓縮工具 壓縮比:文件壓縮比就是指文件經過壓縮后的文件大小與源文件大小的一個比差,經過壓縮工具包可以把文件壓縮 壓縮的目的:      時間換空間      CPU時間換硬盤的空間 壓縮工具: compress/uncompress 以.Z作為文件后綴 gzip/gunz…

    Linux干貨 2016-08-18
  • bash基礎特性(二)之命令別名,IO重定向,管道

    命令別名alias 別名通俗地說,叫花名,當我們常用的命令,要是輸入太長,或經常要進入的目錄,可以用一個別名來定義它們,定義別名時盡量不要和已有命令名相同。這樣可以提高輸入速度和工作效率。定義別名格式:alias 別名=’原命令 參數’ (要是沒空格,可以不用引號)例如 : alias vi=vim [root@dxlcentOS ~…

    Linux干貨 2017-09-24
  • Linux文件系統

    1、Linux文件系統層級標準 為什么Linux的不同發行版中的目錄結構基本上都一樣? Linux有一個組織叫LSB定義的Linux發行版基礎目錄名稱命名法則及功用規定,這種標準叫做 FHS(Filesystem Hierarchy Standard),文件系統層級標準。 /boot:系統引導啟動時要加載的靜態文件:kernel, initramfs(ini…

    Linux干貨 2016-10-29
  • 8月9日vim作業

    復制/etc/rc.d/init.d/functions文件至/tmp目錄;替換/tmp/functions文件中的/etc/sysconfig/init為/var/log; :%s@/etc/sysconfig@/var/log@ 刪除/tmp/functions文件中所有以#開頭,且#后面至少有一個空白字符的行的行首的#號 :%s@^#\([[:spac…

    Linux干貨 2016-08-10
欧美性久久久久