今天我將文本處理命令的學習心得與大家一起分享,請大家多多指點
Linux操作系統中有許多文本處理工具,如cat,tac,more,less,head,tail,cut,join,wc,tr,sed,sort等等,每種文本處理工具所處理的文本信息和處理方式各不相同,下面對這些文本處理命令做常用指令介紹
文本顯示:
cat:將文本內容從頭到尾全部一次性顯示在屏幕上,一般用於查看文件內容比較少的文件
用法:# cat [mode] [file]
-n 顯示文本內容時顯示行號,只是爲了查看方便,並不更改文件元數據
-E 顯示文本內容每行的結束符,Linux中默認爲$,Windows中默認爲$+回車
-T 顯示文本內容中的製表符
-v 顯示文件中的其他非打印字符
-A 顯示所有文本信息
cat+回車:將標準輸入,並以標準輸出到屏幕上
tac:將文本內容從尾部到頭全部一次性顯示在屏幕上,一般用於查看小文件
參數同cat
head:顯示文本內容的頭部幾行,系統默認顯示十行
用法:# head [-n] [file]
-n 顯示文本信息頭部n行
tail:顯示文本內容最後幾行,默認顯示十行
用法:# tail [-n] [file]
-n 顯示文本信息尾部n行
-f 顯示之後並不退出,而等待追加新內容,一般用於監測服務器的運行日誌
more:將文本內容分屏顯示,按空格鍵向下翻一屏,方向鍵翻一行,默認不支持向上翻,當翻到文本最後一行時自動退出,不支持管道
用法:# more file
less:將文本內容分屏顯示,按空格鍵向下翻一屏,b鍵向上翻一屏,方向鍵翻一行,翻到最後一行並不自動退出,按q鍵退出,支持管道
用法:# less file
文本處理:
cut:指定文本剪切顯示
-d 指定字段分隔符,默認爲一個空格
-f 指定要切割顯示的字段,不能單獨使用
如:# cut -d: -f1,3 [-f1-3] /etc/passwd
顯示文件passwd中第一個字段和第三個字段[第一個字段到第三個字段]的內容,中間以“:”隔開
join:多文本合併顯示
如:# join -v file1 -v file2
將文件file1和file2的內容一起顯示在屏幕上
wc:對文件內容進行統計顯示,默認統計字符個數,單詞個數,行數
用法:# wc [mode] [file]
-c 統計文本中有多少字節
-w 統計文本中有多少單詞
-l 統計文本中多少行
-m 統計文本中有多少字符
-L 統計文本中最長行有多少個字符
-a 顯示全部統計信息,系統默認wc == wc -a
tr:轉換或刪除字符,逐個字符進行處理,支持重定向和管道
如:# tr ‘ab’ ‘AB’ < /etc/passwd
將文件passwd中所有小寫ab轉換爲大寫AB
# tr ‘a’ < /tmp/test
將文件test中的所有小寫字母a刪除掉
sed:轉換或刪除文本內容,以行爲單位進行操作,默認不修改文件元數據,只是將需要的文件內容顯示到屏幕上
用法:sed [mode] command file
-n 進入安靜模式;默認爲將讀取到的內容 全部顯示到屏幕上,使用-n參數之後只顯示要查找的內容,一般在有特殊字符是使用
-e 支持多個腳本同時運行;腳本 -e 腳本。。。。。
-f filename 將符合條件的文本內容保存到文件filename中
-r 使得sed命令支持擴展正則表達式的使用
-i 直接修改文件元數據
a \+”內容”[\n] 在指定行的後面追加新內容,內容跟在加號後面,內容一般使用雙引號引起來,\n表示換行符
d 刪除符合條件的行,只顯示不符合條件的行
i \+”內容” 在指定行後面添加內容
nr filename 將filename中的內容添加到符合條件的行後,nr表示添加到第n行後邊
w filename 將filename中的內容另存到指定文件中
s 對文本內容進行查找替換
g 在全局進行指定操作
p 將查找到的內容打印出來,此時會顯示兩次,sed本身顯示一次,p打印一次
實例:$最後一行,1,n第一行到第n行,\轉義字符,將其後邊的字符指標是字符本身的意思
# sed ‘1d’ test 刪除test文件的第一行
# sed ‘$d’ test 刪除test文件的最後一行
# sed ‘1,3d’ test 刪除test文件中的第一行到第三行
# sed -n ‘3p’ test 顯示test文件中第三行
# sed -n ‘/root/p’ /etc/passwd 將文件passwd中含有root的行全部顯示
# sed -f file1 file2 。。。。 將文件file2等保存到file1中
# sed -r ‘/^$/d’ /etc/inittab 將文件inittab中所有的空白行刪除
# sed -r ‘s@^[[:space:]]\{1,\}[[:punct:]]@ @g’ /etc/inittab
# sed ‘5a this is test file \nthis is two’ test 在文件test第五行下邊添加兩行,內容爲
this is test file
this is two
# sed ‘3i this is test’ test 在文件test的第三行上邊添加一行,內容爲this is test
# sed -n ‘^\#’ /etc/inittab 查看文件test中所有以#開頭的行,此處的反斜線是爲了讓後邊的#僅僅表示自身
# sed ‘s/root/user/g’ test 將文件test中所有單詞root更換爲user,如果不加g,則只是更換每一行第一個被找到的字符串
s後邊跟的三個斜槓可以換爲任意特殊字符,如#,$,&等
# cat /etc/passwd | sed ‘s# #,#g’ 將文件passwd中所有的空格改爲逗號
# sed ‘3r /etc/issue’ test 將文件issue中的內容添加到test的第三行後邊
# sed ‘\bash/w test’ /etc/passwd 將文件passwd中含有bash的行保存到文件test中
sort:文本排序顯示,只將輸出內容進行排序,並不改變文件元數據,而sort默認以ASCII碼爲標準進行排序
用法:# sort [mode] file
-n 數值排序,按照輸出內容的數值大小進行排序
-r 逆序排列,安照ASCII的反順序進行排序
-t 指定字段的分隔符
-k 以某一字段爲標準進行排序,一般按照自左而右進行排序
-u 排序之後省略文本中的重複內容,系統默認相連的兩行才爲重複行
sort -u == uniq
-f 排序時忽略字符大小寫
實例:# sort -n test 將test文件中的內容進行排序顯示,並且之比較字母,數字和空格
# sort -f -r test 將test文件中的內容進行逆序顯示,排序時不區分字符大小寫
# sort -f -u -n test 將test文件中的內容以字母,但不區分字符大小寫排序,並且將重複行省略
# sort -t: +n test 將test文件中的內容以第n個字符段開始進行排序,並且每個字符段之間以冒號隔開,此處的+n表示從第n個字符段開始進行
# sort -t: -kn,m test 將test文件中的內容以第n行的第m個字段開始排序,每個字段之間以冒號隔開,此處的-kn,m表示以第n行第m個字符段爲標準進行
# sort -u +0 -f -r test 將test中的內容進行排序,並且省去重複行,此處的+0表示進行另一項比較,以區分不一樣的行
如果有寫的不足地方請大家多多指點