一文帶你從零掌握linux文字分析處理命令,包括cat、sort、uniq、cut、paste、join、comm、diff、patch、tr、sed、aspell。
cat——進行檔案之間的拼接並且輸出到標準輸出
常用選項:
-a,顯示文字中的控制字元,如tab和換行
-n,給文字行新增行號
-s,禁止輸出多個空白行
sort——對文字行進行排序
sort可以把多個檔案合併為乙個有序的檔案 >
選項:-b(–ignore-leading-blanks)忽略每行開頭空格,從第乙個非空白字元開始排序
-f(–ignore-case)讓排序不區分大小寫
-n(–numeric-sort)基於字串的數值來排序,而不是字母值
-r(–reverse)按相反順序排序。結果按照降序排列,而不是公升序。
-k(–key=field1[,field2])從對field1到field2之間的字元排序。
-m(–merge)把每個引數看作是預排序的檔案。把多個檔案合併成乙個排好序的檔案,不執行額外的排序
-o(–output=file)輸出到檔案
-t(–field-separator=char)自定義域分隔字元。預設域由空格或製表符分隔
幾個應用場景:
#du命令指定檔案或目錄所占用的磁碟空間,結合sort -n和-r選項,輸出占用磁碟空間最大的使用者
du -s /usr/share/* |
sort -nr |
head
#對ls輸出的檔案大小進行排序
ls -l /usr/bin |
sort -nr -k 5 |
head
#可以有多個-k選項,即指定多個排序關鍵值
ls -l /usr/bin |
sort --key=6r --key=5nr |
head
uniq——通知或省略重複的行
給定乙個排好序的檔案,可以刪除任意重複行,常與sort一塊使用來清理重複輸出。
選項:-c 輸出所有重複行,每行開頭顯示重複次數
-d 只輸出重複行,而不是特有的文字行
-f n 忽略每行開頭的n個字段,字段之間有且只能由空格分隔
-i 在比較文字行的時候忽略大小寫
-s n跳過每行開頭的n個字元
-u 只輸出獨有的文字行,預設。
cut——刪除文字行中的部分內容
從文字行中抽取文字,可以接受多個檔案引數或標準輸入。cut抽取文字相當不靈活,最好從其他程式產生的檔案中抽取文字,而不適用於人輸入的文字。
選項:-c char_list 從乙個文字行中抽取由char_list定義的文字。這個列表可能是由乙個或多個逗號分隔開的數值區間組成
-f field_list 從文字行中抽取乙個或多個由field_list定義的字段。這個列表可能包括乙個或多個字段,或由逗號分隔開的字段區間
-d delim_char 指定-f選項後,使用delim_char做欄位分隔符。預設字段之間由單個tab字元分隔開
–complement 抽取整個文字行,除了那些由-c/或-f選項指定的文字
#使用-d指定:為分隔符
cut -d ':' -f 1 /etc/passwd |
head
paste——合併文字行
與cut相反,會新增乙個或多個文字列到檔案中。
應用場景:將檔案中的兩個字段調換位置。
join——連線兩檔案中具有相同欄位的行
類似關係型資料庫,將多個享有共同關鍵域的**資料結合起來。預設情況join命令使用空白字元作為輸入欄位的界定符,乙個空格作為輸出欄位的界定符。可以通過選項修改。
comm——逐行比較兩個已排序檔案
diff——逐行比較檔案
patch——對原檔案進行diff操作
tr——替換或刪除字元
sed——用於文字過濾和轉換的流編輯器
aspell——互動式拼寫檢查工具
其他還包括split(把檔案分割成碎片)、csplit(基於上下文把檔案分割成碎片)、sdiff(併排合併檔案差異)
常用linux 文字分析命令摘要一
有時我們需要對日誌等資訊進行統計,如某些資料的的平均值,方差,變異係數等。less a.txt awk end sort rn k 1 t awk f else end 另外一種更加快速簡單的統計方法。less a.txt awk end 檢視所有jar檔案是否包含某個類。ls jar awk 統計...
Python文字分析及預處理
文字分析的基本功能學習,包括句子切分 單詞切分 大小寫轉化 刪除停用詞 題幹提取 詞性還原。基本功能學習 句子切分,單詞切分 import nltk a s nltk.sent tokenize a print s w for i in s for j in nltk.word tokenize i...
python,文字分析
記得將當前目錄設定為檔案目錄 spyder編譯器的右上角,本人用spyder filename input 請輸入你的檔名 file open filename txt try for eachline in file print eachline except print 開啟檔案出錯 final...