天天看點

Linux日常小技巧文本處理

作者:風趣運維工程獅

Linux作業系統中,awk、grep、sed、cut是常用的文本處理工具,它們可以幫助我們快速地處理文本資料,提高工作效率。前面我已經寫過一些示例,今天在介紹詳細介紹一下,它們的用法和應用場景。

一、awk

awk是一種強大的文本處理工具,它可以根據指定的規則對文本進行分析和處理。awk的基本文法是:awk 'pattern {action}' file,其中pattern是比對模式,action是對比對到的文本執行的操作。

應用場景:

1.統計檔案中某一列的總和

示例:假設有一個檔案data.txt,内容如下:

Tom 20
Jerry 30
Mike 40           

我們可以使用awk指令來統計第二列的總和,指令如下:

awk '{sum+=$2} END {print sum}' data.txt           

輸出結果為:90

2.根據條件過濾文本

示例:假設有一個檔案data.txt,内容如下:

Tom 20
Jerry 30
Mike 40           

我們可以使用awk指令來過濾出第二列大于等于30的行,指令如下:

awk '$2>=30' data.txt           

輸出結果為:

Jerry 30
Mike 40           

3.替換文本中的内容

示例:假設有一個檔案data.txt,内容如下:

Tom 20
Jerry 30
Mike 40           

我們可以使用awk指令來将檔案中的Tom替換為Tim,指令如下:

awk '{gsub(/Tom/,"Tim")}1' data.txt           

輸出結果為:

Tim 20
Jerry 30
Mike 40           

二、grep

grep是一種文本搜尋工具,它可以在檔案中查找指定的字元串,并輸出比對的行。grep的基本文法是:grep 'pattern' file,其中pattern是比對模式。

應用場景:

1.查找包含指定字元串的行

示例:假設有一個檔案data.txt,内容如下:

Tom 20
Jerry 30
Mike 40           

我們可以使用grep指令來查找包含Tom的行,指令如下:

grep 'Tom' data.txt           

輸出結果為:

Tom 20           

2.查找不包含指定字元串的行

示例:假設有一個檔案data.txt,内容如下:

Tom 20
Jerry 30
Mike 40           

我們可以使用grep指令來查找不包含Tom的行,指令如下:

grep -v 'Tom' data.txt           

輸出結果為:

Jerry 30
Mike 40           

3.查找包含指定字元串的檔案

示例:假設有一個目錄test,其中包含多個檔案,我們可以使用grep指令來查找包含指定字元串的檔案,指令如下:

grep -rl 'pattern' test/           

其中,-r表示遞歸查找,-l表示隻輸出檔案名。

三、sed

sed是一種流編輯器,它可以對文本進行替換、删除、插入等操作。sed的基本文法是:sed 'command' file,其中command是對文本執行的操作。

應用場景:

1.替換文本中的内容

示例:假設有一個檔案data.txt,内容如下

Tom 20
Jerry 30
Mike 40           

我們可以使用sed指令來将檔案中的Tom替換為Tim,指令如下:

sed 's/Tom/Tim/g' data.txt           

輸出結果為:

Tim 20
Jerry 30
Mike 40           

2.删除指定行

示例:假設有一個檔案data.txt,内容如下:

Tom 20
Jerry 30
Mike 40           

我們可以使用sed指令來删除第二行,指令如下:

sed '2d' data.txt           

輸出結果為:

Tom 20
Mike 40           

3.插入文本

示例:假設有一個檔案data.txt,内容如下:

Tom 20
Jerry 30
Mike 40           

我們可以使用sed指令來在第二行後插入一行文本,指令如下:

sed '2a\Hello World' data.txt           

輸出結果為:

Tom 20
Jerry 30
Hello World
Mike 40           

四、cut

cut是一種文本處理工具,它可以按列切割文本。cut的基本文法是:cut -d 'delimiter' -f field file,其中delimiter是分隔符,field是要提取的列數。

應用場景:

1.提取指定列

示例:假設有一個檔案data.txt,内容如下:

Tom 20
Jerry 30
Mike 40           

我們可以使用cut指令來提取第二列,指令如下:

cut -d ' ' -f 2 data.txt           

輸出結果為:

20
30
40           

2.提取多個列

示例:假設有一個檔案data.txt,内容如下:

Tom 20 男
Jerry 30 女
Mike 40 男           

我們可以使用cut指令來提取第一列和第三列,指令如下:

cut -d ' ' -f 1,3 data.txt           

輸出結果為:

Tom 男
Jerry 女
Mike 男           

3.按字元位置切割文本

示例:假設有一個檔案data.txt,内容如下:

Tom 20
Jerry 30
Mike 40           

我們可以使用cut指令來按字元位置切割文本,指令如下:

cut -c 1-3 data.txt           

輸出結果為:

Tom
Jer
Mik           

總結:

awk、grep、sed、cut是Linux作業系統中常用的文本處理工具,它們各自有不同的應用場景和用法。awk可以根據指定的規則對文本進行分析和處理,grep可以在檔案中查找指定的字元串,sed可以對文本進行替換

Linux日常小技巧文本處理

整理不易,歡迎點贊轉發收藏,關注我每天分享運維小知識。