文本處理

今天我將文本處理命令的學習心得與大家一起分享,請大家多多指點

Linux操作系統中有許多文本處理工具,如cattacmorelessheadtailcutjoinwctrsedsort等等,每種文本處理工具所處理的文本信息和處理方式各不相同,下面對這些文本處理命令做常用指令介紹

文本顯示:

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

將文件file1file2的內容一起顯示在屏幕上

 

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個字段開始排序,每個字段之間以冒號隔開,此處的-knm表示以第n行第m個字符段爲標準進行

# sort -u +0 -f -r test test中的內容進行排序,並且省去重複行,此處的+0表示進行另一項比較,以區分不一樣的行

如果有寫的不足地方請大家多多指點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章