1 文字處理基本操作
more/less:逐屏顯示文字,一般用在很長的檔案檢視
head/tail:檢視檔案頭幾行或者末尾幾行
wc:word count,對於文字進行計數head -n
tail -n
tr: translate 翻譯字元,可以將乙個字串替換為另外乙個字串wc -l 按照回車符計算有多少行
wc -c 計算有多少單詞
tr string1 string2
sort:對文字進行排序
sort -n 表示倒序
uniq:取除重複字串
這個重複的行表示連續的行重複。
tee:三通 將輸出內容同時輸出到螢幕和儲存到檔案。相比於重定向(>),重定向只能儲存到檔案。uniq 返回去除連續重複字串的結果
uniq -u (unique) 只保留沒有重複的行
uniq -d (duplicated) 只保留重複的行
uniq -c (count) 計數同樣的行出現了幾次
2 正規表示式
正規表示式用來表示乙個字串的模式,其中基本正規表示式包括特殊字元六個:圓點(.),^,[,$,*,\。如果將要將這些特殊字元轉換為普通字元,需要使用轉義符\。圓點表示任意字元,^表示開頭,$表示結尾。使用連線符[-]可以表示乙個區間,不使用連線符[-]可以表示乙個集合。*表示前0個字元重複1次或者多次。特殊需要指出的是,^只有在正規表示式首位以及$在正規表示式尾部才能作為開始和結束的標記,在其他位置都是普通字元。在表示集合或區間的時候,^用在開頭可以表示補集,比如[^a-z],表示非小寫字母。
除此之外,還有擴充套件的正規表示式,可以用圓括號()和表示「或」的符號|,其次,還定義了和正規表示式中的星號地位類似的+和?。*號表示它左邊的單字元正規表示式的0次或多次重複,對應的,+號 表示1次或多次,?表示0次或一次。
目前主要有三種命名進行文字處理:grep,sed,awk。
grep(global regular expression print)命令是一種文字過濾程式,按照正規表示式的規則,僅篩選出含有指定模式字串的文字行。
awk:文字處理語言grep pattern filename 在特定檔案查詢
grep -r pattern docment 掃瞄資料夾中所有
awk 是一種處理文字檔案的語言,是乙個強大的文字分析工具。awk程式逐行掃瞄文字檔案,並進行處理。和其它的文字處理程式一樣,awk可以指定0到多個檔案作為處理物件。awk有很強的功能,它是一種模式掃瞄和處理語言,支援條件控制,迴圈控制,變數定義,函式等功能。
用法1:
awk 'program' file-list
awk程式的寫法是:
condition {action}
awk把輸入檔案的每一行作為乙個「記錄」,變數nr就是行號。每行中,用空格或者
製表符分隔開的部分,叫做每個記錄中的「域」。變數$1指的是第1個域內容,依次,變數$2指的是第2個域內容,……。換句話說,就是列的資訊。特別的,$0指的是整個這一行的內容。begin和end。begin之後的動作,在awk開始處理所有文字行之前執行。同樣,end之後的動作,在awk處理完所有文字行之後執行。nf是當前行的總段數,fs是當前的分隔符,預設是空格鍵。
program裡面的內容,除了**,其他的格式用字串表示用空格隔開。
root@my:~# last
root pts/4 125.33.162.88 wed oct 28 12:54 still logged in
root pts/4 125.33.162.88 wed oct 28 12:51 - 12:54 (00:03)
用法2:root@my:~# last | awk ''
root 125.33.162.88
awk -f programfile file-list
programfile按照begin,end等格式編寫,字尾儲存為.awk.
begin
end
last | awk -f cal.awk
sed(stream editor)是乙個流編輯程式,當指定的處理物件為0個檔案時,它從標準輸
入獲取輸入字元流,否則,將檔案中的資料作為作為輸入字元流。對輸入字元流進行編
輯處理,加工處理後再輸送到標準輸出。這兩種用法的區別和awk命令類似。
用法1: sed '命令' 檔名列表
sed的編輯命令有很多,這裡的s命令是「替換(substitute)」第一部分是正規表示式,第二部分是替換字串,最後的g是global flag,這一特徵字元,使得s命令在一行中遇到多個模式描述的字串時,都替換,否則,僅替換一次。root@my:~# last |sed 's/root/fff/g'
fff pts/0 125.33.162.88 wed oct 28 13:04 still logged in
fff pts/4 125.33.162.88 wed oct 28 12:54 still logged in
用法2: sed -f 檔名 檔名列表
sed指令碼是乙個sed的命令清單,啟動sed時以-f選項引導指令碼檔名。sed對於指令碼中輸入的命令非常挑剔,在命令的末尾不能有任何空白或文字,如果在一行中有多個命令,要用分號分隔。以#開頭的行為注釋行,且不能跨行。這個目前我理解,sed指令碼就是乙個bash指令碼。
比較兩個檔案是否相同:
這兩個命令用於比較兩個檔案是否相同。用法:cmp file1 file2
用法:diff file1 file2
cmp命令逐個位元組比較兩個檔案是否完全相同,兩個檔案完全相同時,不給出任何提
示。當兩個檔案不同時,列印出第乙個不同之處。這個命令常用來判斷兩個檔案的內容
是否完全一致,無論是ascii碼檔案還是二進位制格式的程式或資料檔案。
diff用來比較文字檔案root@my:~# cmp list.awk cal.awk
list.awk cal.awk differ: byte 7, line 1
命令diff file1 file2每發現兩個檔案中的一處不同,就列出乙個如何將f1.c轉化為f2.c的指令,這些指令有a(add),c(change)和d(delete)。指令用乙個字母a,c或d表示,指令字母左邊的行號是file1的行號,指令右面的行號是file2的行號。列出內容時,大於號後邊的內容是需要在file1檔案中增加的內容,小於號後邊的內容是需要從file1中刪除的內容。
diff命令常用的選項有:root@my:~# diff list.awk cal.awk
1,9c1,3
< begin
< end
<
---
> begin
>
> end
-b 逐行比較兩個檔案時忽略每行結尾處的多餘空格。
就可以變成檔案file2。ed也是乙個文字編輯命令。
diff -u 類似於git,版本管理系統,--表示移除,++表示新增。
說明:grep,awk,sed之間的區別是什麼?
grep用來搜尋字串,awk和sed用來文字處理。awk更加靈活一些,不僅可以按照行進行梳理,也可以對一些字段進行處理,可以使用c語言。sed可以在vi中使用,可以進行編輯,也可以不儲存這個編輯的結果(快取空間),保留原始檔案。
檔名萬用字元
檔名萬用字元是由shell解釋,也就是shell會幫我們把我的萬用字元對映成所有的目標結果。
linux 文字處理
1.文字處理 echo echo e 033 40 35m.背景顏色範圍 40 49 40 黑 41 深紅 42 綠 43 黃色 44 藍色 45 紫色 46 深綠 47 百色 字型顏色範圍 30 39 30 黑 31 紅 32 綠 33 黃 34 藍色 35 紫色 36 深綠 37 百色 eg e...
Linux 文字處理
author janloong do o cat 連線檔案並且列印到標準輸出 sort 給文字行排序 uniq 報告或者省略重複行 cut 從每行中刪除文字區域 paste 合併檔案文字行 join 基於某個共享欄位來聯合兩個檔案的文字行 comm 逐行比較兩個有序的檔案 diff 逐行比較檔案 p...
Linux文字處理命令
4 linux文字處理命令sort命令 sort命令的功能是對檔案中的各行進行排序。sort命令有許多非常實用的選項,這些選項最初是用來對資料庫格式的檔案內容進行各種排序操作的。實際上,sort命令可以被認為是乙個非常強大的資料管理工具,用來管理內容類似資料庫記錄的檔案。sort命令將逐行對檔案中的...