09 文本處理工具
紅帽RHCT課程講義紅帽企業(yè)紅帽企業(yè)Linux用戶基礎(chǔ)用戶基礎(chǔ)RHA文本處理工具文本處理工具8單元單元紅帽紅帽企業(yè)企業(yè)Linux用戶基礎(chǔ)用戶基礎(chǔ)目標(biāo)目標(biāo)本單元你將學(xué)習(xí)到本單元你將學(xué)習(xí)到:使用工具提取、分析和操作文本數(shù)據(jù)提取文本工具提取文本工具文件內(nèi)容:文件內(nèi)容:less和和cat文件摘選:文件摘選:head和和tail提取列或者字段:提取列或者字段:cut按關(guān)鍵字提取:按關(guān)鍵字提?。翰榭次募?nèi)容查看文件內(nèi)容-less和和catcat:dump一個或者多個文件到標(biāo)準(zhǔn)輸出一個或者多個文件到標(biāo)準(zhǔn)輸出多個文件聯(lián)合在一起Less:在查看文件或者標(biāo)準(zhǔn)輸入的時候,每次只看一頁在查看文件或者標(biāo)準(zhǔn)輸入的時候,每次只看一頁在查看時常用的命令如下:/text:搜索textn/N:跳轉(zhuǎn)到next/previous匹配的地方v:用文本編輯器打開該文件man命令中是采用命令中是采用less來分頁的來分頁的查看文件摘選查看文件摘選-head和和tailhead:顯示文件的起始:顯示文件的起始10行行使用-n選項改變行顯示tail:顯示文件最后:顯示文件最后10行行使用-n選項改變行顯示使用-f選項來繼續(xù)從輸入文件復(fù)制額外的單元對于監(jiān)控日志文件非常有用!通過關(guān)鍵字來提取文本通過關(guān)鍵字來提取文本-grep打印匹配的文件行或者標(biāo)準(zhǔn)輸入打印匹配的文件行或者標(biāo)準(zhǔn)輸入$grep john/etc/passwd$date help|grep year使用使用-i選項選項:忽略大小寫敏感搜索忽略大小寫敏感搜索使用使用-n選項選項:打印匹配的行號打印匹配的行號使用使用-v選項選項:打印哪些不匹配的行打印哪些不匹配的行使用使用-AX選項選項:在匹配數(shù)據(jù)后包含顯示在匹配數(shù)據(jù)后包含顯示X行行使用使用-BX選項:在匹配數(shù)據(jù)前包含顯示選項:在匹配數(shù)據(jù)前包含顯示X行行使用使用-r選項:遞歸搜索目錄選項:遞歸搜索目錄使用使用-color=auto選項:用選項:用color顏色高亮顯示匹配的數(shù)據(jù)顏色高亮顯示匹配的數(shù)據(jù)提取列或字段提取列或字段-cut顯示文件指定的列或者標(biāo)準(zhǔn)輸入數(shù)據(jù)顯示文件指定的列或者標(biāo)準(zhǔn)輸入數(shù)據(jù)$cut-d:-f1/etc/passwdgrep root/etc/passwd|cut-d:-f7使用使用-d選項來指定列分隔符(默認是選項來指定列分隔符(默認是TAB)使用使用-f選項來指定要打印的列選項來指定要打印的列使用使用-c選項來指定按字符來提取選項來指定按字符來提取$cut c2-5/usr/share/dict/文本分析工具文本分析工具文本統(tǒng)計:文本統(tǒng)計:wc文本排序:文本排序:sort文件比較:文件比較:diff和和patch拼寫檢查:拼寫檢查:收集文本統(tǒng)計收集文本統(tǒng)計-wc(單詞統(tǒng)計單詞統(tǒng)計)計算單詞數(shù),行數(shù),字節(jié)數(shù)和字符數(shù)計算單詞數(shù),行數(shù),字節(jié)數(shù)和字符數(shù)可以針對一個文件或者標(biāo)準(zhǔn)輸入可以針對一個文件或者標(biāo)準(zhǔn)輸入$wcstory.txt39 237 1901 story.txt使用使用-l選項:僅僅統(tǒng)計行數(shù)選項:僅僅統(tǒng)計行數(shù)使用使用-w選項:僅僅統(tǒng)計單詞數(shù)選項:僅僅統(tǒng)計單詞數(shù)使用使用-c選項:僅僅統(tǒng)計字節(jié)數(shù)選項:僅僅統(tǒng)計字節(jié)數(shù)使用使用-m選項:統(tǒng)計字符數(shù)選項:統(tǒng)計字符數(shù)(不顯示不顯示)文本排序文本排序-sort對標(biāo)準(zhǔn)輸出排序?qū)?biāo)準(zhǔn)輸出排序-原始文件不改變原始文件不改變$sort options file(s)常用選項常用選項-r:執(zhí)行反向(降)排序-n:執(zhí)行數(shù)字排序-f:忽略字符串中的大小寫-u:在輸出中刪除重復(fù)的行(唯一)-t c:使用c作為字段間的分隔符k X:使用c分隔符排序X字段可多次使用消除重復(fù)行消除重復(fù)行-sort和和uniqsort-u:從輸入刪除重復(fù)行從輸入刪除重復(fù)行uniq:從相鄰的行中刪除重復(fù)行:從相鄰的行中刪除重復(fù)行使用-c選項統(tǒng)計發(fā)生重復(fù)的次數(shù)跟sort一起使用效果最好:$sort userlist.txt!uniq-文件比較文件比較-diff比較兩個文件的不同比較兩個文件的不同$diff foo.conf-broken foo.conf-works 5c5use_widgets=yes指出差異在第行使用圖形化的使用圖形化的diff工具工具gvimdiff,在,在vim-x11包里包里復(fù)制文件更改復(fù)制文件更改-patchdiff命令輸出差異并保存在命令輸出差異并保存在patchfile文件中文件中使用-u選項統(tǒng)一diff,對生成patchfile是有好處的patch 命令復(fù)制改變在其它的文件中命令復(fù)制改變在其它的文件中(小心使用小心使用!)使用-b選項自動備份變更的文件diff-u foo.conf-broken foo.conf-works foo.patchpatch-b foo.conf-broken 使用使用aspell做拼寫檢查做拼寫檢查交互式拼寫檢查文件交互式拼寫檢查文件:$aspell check letter.txt非交互式列出拼錯的單詞非交互式列出拼錯的單詞$aspell list letter.txt$aspell listletter.txt|wc-文本操作工具文本操作工具-tr和和sed更改更改(轉(zhuǎn)變轉(zhuǎn)變)字符字符:tr轉(zhuǎn)換一種字符集合為另外一種字符集合只能從STDIN讀取數(shù)據(jù)$tr a-z A-Zlowercase.txt更改字符串更改字符串:sed流編輯器執(zhí)行查找/替換 操作在文本流上通常不改變原文件使用 i.bak備份和修改原文件sed示例示例提供查詢和替換指令提供查詢和替換指令sed技巧技巧sed s/dog/cat/g petssed 1,50s/dog/cat/g petssed/digby/,/duncan/s/dog/cat/g pets多路多路sed指令指令sed e s/dog/cat/e s/hi/lo/petssed f myedits 復(fù)雜的查詢復(fù)雜的查詢-正則表達式正則表達式表示行的開始表示行的開始$表示行的結(jié)束表示行的結(jié)束在在bash中做為字符類中做為字符類abc,abc:upper:,:upper:被許多命令使用被許多命令使用:grep,sed,總結(jié)和實驗總結(jié)和實驗摘要和實驗摘要和實驗提取文本cat,less,head,tail,grep,cut文本分析wc,sort,uniq,diff,patch文本操作tr,sed特殊的搜索字符,$,abc,abc,:alpha:,:alpha:等注:全部的實驗和練習(xí)題也可以直接從我們的網(wǎng)站上下注:全部的實驗和練習(xí)題也可以直接從我們的網(wǎng)站上下載載