日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

linux过滤脚本中的字段,Shell脚本中常用的文本过滤命令

發布時間:2025/4/17 82 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux过滤脚本中的字段,Shell脚本中常用的文本过滤命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Linux運維日常工作中,Shell腳本的使用如家常便飯一樣,須做到順手拈來,文本處理所占比重更是不容小視,而文本處理中,稍具難度的莫過于文本的過濾。今天我們要通過這一講,掌握文本過濾的常用命令,有哪些呢?具體如下:

1)head

作用:提取文本文件的前幾行

格式:head? -數字? 文本文件

實例:

--查看/etc/passwd/文件的前3行

#head? -3? /etc/passwd

2)tail

作用:提取文本文件的末尾幾行

格式:tail +數字/-數字/-f?? 文本文件

實例:

--查看/etc/passwd文件中的最后5行

#tail? -5? /etc/passwd

--查看/etc/passwd文件的第10行到最后一行的內容

#tail? +10? /etc/passwd

--監視/vas/log/messages文件是否追加了內容

#tail? -f? /var/log/messages

3)grep

作用:在文本文件中提取匹配的行

格式:grep? [參數] "字符串/正則表達式"? 文本文件

參數:

-c 只顯示匹配的行的個數,不顯示行的內容

-q 只顯示查找狀態,不顯示行的內容

-v 查找不匹配的行

-n 在顯示行前標上在文檔中的行號

-w 完全匹配

-i 模式匹配時忽略大小寫

正則表達式元字符:

^

錨定行的開始 如:'^grep'匹配所有以grep開頭的行

$

錨定行的結束 如:'grep$'匹配所有以grep結尾的行

.

匹配一個非換行符的字符 如:'gr.p'匹配gr后接一個任意字符,然后是p

*

匹配零個或多個先前字符 如:' *grep'匹配所有一個或多個空格后緊跟grep的行。

.*一起用代表任意字符

[...]

匹配一個指定范圍內的字符,如'[Gg]rep'匹配Grep和grep

[^...]

匹配一個不在指定范圍內的字符

\(..\)

標記匹配字符,如'\(love\)',love被標記為1

\<

錨定單詞的開始,如:'\

\>

錨定單詞的結束,如:'grep\>'匹配包含以grep結尾的單詞的行

x\{m\}

重復字符x,m次,如:'0\{5\}'匹配包含5個0的行

x\{m,\}

重復字符x,至少m次,如:'o\{5,\}'匹配至少有5個o的行

x\{m,n\}

重復字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5-10個o的行

實例:

--在/etc/passwd文件中查找包含字符串root的行并顯示

#grep? "root"? /etc/passwd

--在/etc/passwd文件中查找以a/b/d開頭的行并顯示行內容

#grep? "^[abd]"? /etc/passwd

--統計/etc下以d開頭的行數

#ls -l /etc | grep -c "^d"

4)sort

作用:對文本文件進行排序并輸出

格式:sort [參數]? 文件路徑

-f 忽略大小寫

-t 指定字段分隔符

-r????? 降序排列

-n????? 按數字大小排列

-u 消除重復行

實例:

--輸出/etc/passwd文件內容并排序

#sort? /etc/passwd

--對/etc/passwd文件按第三字段排序,以:號字段分隔符,并以數字升序排列

--sort? -t: -n? +2 -3? /etc/passwd

5)uniq

作用:去除文本文件中重復內容并輸出

格式:uniq? [參數]? 文本路徑

-u 輸出未重復的內容

-d 輸出重復的內容

實例:

--顯示/abc/a1文件內容,去除重復,重復的行只顯示一行

#uniq? /abc/a1

--顯示/abc/a1的未重復內容,重復的行全都不顯示

#uniq? -u? /abc/a1

--只顯示/abc/a1的重復內容,重復的行只顯示一行

#uniq -d? /abc/a1

注:經常結合sort與uniq

如:#sort? /abc/a1 | uniq

6)sed

作用:Sed(a stream editor)是一種流線型、非交互式編輯器。用可利用命令來編輯文件內容并輸出

格式:sed? [參數] '子命令'? 文件路徑

-n 關閉默認顯示

-e 多次編輯

子命令:

-p 顯示匹配的行

-a 在指定行的后面添加新行

-i 在指定行的前面添加新行

-d 刪除匹配的行

-s 修改匹配的行

-r 將指定文件的內容讀到當前文件匹配的行的下面

-w 將匹配的內容寫到指定的文件中

-y 傳送字符,變換字符

-n 讀取下一行

-{...} 對匹配的行執行命令組

-q 退出sed

-b 標記 //跳到標記位置

-t 標記 //如果某行發生修改,則跳到指定位置

-T 標記 //如果某行未發生修改,則跳轉到指定位置

實例:

-->打印命令:p

--顯示/etc/passwd下包含root的行

#sed? -n? '/root/p' /etc/passwd

--顯示/etc/passwd下2到15的行

#sed? -n? '2,15p'? /etc/passwd

--顯示/etc/passwd下2到末尾的行

#sed? -n? '2,$p'? /etc/passwd

-->刪除命令:d

--刪除/etc/passwd下以u1開頭的行,其余行輸出到屏幕

#sed? '/^u1/d' /etc/passwd

--刪除/etc/passwd中的第9行,其余行輸出到屏幕

#sed? '9d' /etc/passwd

--刪除/etc/passwd下含有u1的行,其余行輸出到屏幕

#sed? '/u1/d'? /etc/passwd

-->修改命令:s

--將/etc/passwd中所有的root修改為admin,并輸出

#sed? 's/root/admin/g'? /etc/passwd

--將/etc/passwd中第一行到第五行的root修改為admin,并輸出

#sed? '1,5s/root/admin/g' /etc/passwd

-->在指定行的后面添加新行:a

--在/etc/passwd中第3行下面插入一行“linux system”

#sed? '3a \linux system' /etc/passwd

-->在指定行的前面添加新行:i

-在/etc/passwd中第3行前面插入一行“linux system”

#sed? '3i \linux system' /etc/passwd

-->將指定文件的內容讀到當前文件匹配的行的下面:r

--將/abc/a1的內容讀到/abc/a2第5行的下面

#sed? '5r /abc/a1'? /abc/a2

-->將匹配的內容寫到指定的文件中:w

--將/etc/passwd下包含root的行寫到/abc/root.txt中

#sed? -n? '/root/w? /abc/root.txt' /etc/passwd

-->傳送字符,變換字符:y

--將/abc/a1第2行到第5行的a變為大寫A

#sed? '2,5y/a/A/' /abc/a1

-->退出:q

--在打印了5行之后,用q命令退出sed程序。

#sed '5q'? /etc/passwd

8)tr

作用:替換或刪除文件中的指定字符

格式:tr [參數] 字符串1? 字符串2? 文件路徑

-c 替換字符

-d 刪除字符

-s 替換字符串1?? 字符串2

字符范圍:

[A-Z]

[a-z]

[0-9]

[0*n]??? //表示字符0重復出現指定次數n

如:[0*2]匹配00的字符串

\octal

控制字符:

\a 鈴聲

\b 退格符

\n 新行

\r 回車

\t tab鍵

通配字符:

[:alnum:] 所有字母和數字

[:alpha:] 所有字母

[:lower:] 所有小寫字母

[:upper:] 所有大寫字母

[:digit:] 所有數字

[:blank:] 所有空行

[:space:] 所有空格

[:graph:] 所有可顯示的字符,不包含空格

[:print:] 所有可顯示的字符,包括空格

[:cntrl:] 所有控制字符

[:punct:] 所有標點符號字符

[:xdigit:] 所有十六進制數字

實例:

--去除/abc/a1中的換行符

#tr -d? '\n\r' < /abc/a1

--修改/abc/a1中所有abc為123

#tr 'abc' '123' < /abc/a1

--修改/abc/a1中所有小寫字母為大寫字母

#tr [:lower:] [:upper:] < /abc/a1

總結

以上是生活随笔為你收集整理的linux过滤脚本中的字段,Shell脚本中常用的文本过滤命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。