歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Linux shell編程基礎 九、sed和awk

正則表達式

一個點(.)代表一個字符。

比如:.a. 代表3個字符,中 間一個字符是a,兩邊各一個任意字符。

比如:... 代表3個任意字符。

若 要匹配點(.)本身,則使用轉義字符。

比如:my\... 代表my.後接兩個字符。

行首匹配^

行尾匹配$

[...] 代 表字符串中的一個字符。

比如:[abc] 代表a或b或c中的任意一個字符。

比如:[Mm]y 代表My或者my。

^出現在[]裡,代表“非”

比如:[^a]代表 不是a

*代表前面的字符有0個或者0個以上

比如:a*b代表ab或aab或aaab等 。

\{...\}代表制定符合的個數。

比如:\{1,5\}代表前面的字符有1-5個。

Sed

sed基本語法:sed '樣 式' 文件

樣式中,使用// 代表尋找,比如1,5代表第一到第五 行,/aaa/,/bbb/ 表示作用范圍從aaa的行到bbb的行。

例子:

sed '1,4d' file 指的是把第一到第四行刪除。

sed '/aaa/d' file 指的是把還有aaa的那行刪除。

sed '/[0-9]\{3\}/d' file 指的是把還有3個數字的行刪除。

sed '/^$/d' file 指的是把空白行刪除。

sed '/aaa/!d' file 指的是把不含有aaa行的刪除。

sed '/aaa/p' file 指的是把 含有aaa的行顯示出來。

sed -n '/aaa/p' file 指的是把含有aaa的 行顯示出來,同時顯示行號。

使用sed取代字符

例子:

sed 's/aaa/bbb/p' file 將bbb取代aaa,只取代一次。

sed 's/aaa/bbb/pg' file 將bbb取代aaa,全部取代。

sed 's/aaa//p' file 將aaa刪除,只刪除一次。

sed 's/^...//' file 將每行的前3個字符刪除。

sed 's/...$//' file 將每行的後3個字符刪除。

sed -n 's/\(a\)/\1b/p' file 找到第一個a然後替換成ab。

awk

awk '/aa/' file 顯示含有aa的行。

awk '{print $1, $2}' file 顯示第一第二字段。

awk '/aa/{print $1, $2} ' file 將含有aa的行的第一和第二個字段顯示出來。

awk -F: '/^root/{print $1, $2}' /etc/passwd 指定:為分隔符,打印第一和 第二字段。

awk -F: 'BEGIN{OFS="+++"}'/^root/{print $1, $2} /etc/passwd 以:為分隔符,打印第一和第二段,而且彼此用+++分開。

Copyright © Linux教程網 All Rights Reserved