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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

grep 和 sed:linux经常使用工具 amp; 基本正則表達式

發布時間:2025/3/15 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 grep 和 sed:linux经常使用工具 amp; 基本正則表達式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

grep 見鏈接:http://www.cyberciti.biz/faq/grep-regular-expressions/

sed參考文章:http://www.thegeekstuff.com


sed工作原理

This is called as one execution cycle. Cycle continues till end of file/input is reached:
1. Read a entire line from stdin/file.
2. Removes any trailing newline.
3. Places the line, in its pattern buffer.
4. Modify the pattern buffer according to the supplied commands.
5. Print the pattern buffer to stdout.


sed使用語法:

sed [-nefri] [命令]
描寫敘述:
-n :使用安靜(silent)模式。在一般 sed 的使用方法中,全部來自 STDIN 的數據一般都會被列出到終端上。

但假設加上 -n 參數后。則僅僅有經過sed 特殊處理的那一行(或者動作)才會被列出來。
-e :直接在命令列模式上進行 sed 的動作編輯。
-f :直接將 sed 的動作寫在一個文件內。 -f filename 則能夠運行 filename 內的 sed 動作。
-r :sed 的動作支持的是延伸型正規表示法的語法。(默認是基礎正規表示法語法)
-i :直接改動讀取的文件內容。而不是輸出到終端。

匹配的的格式(行號,模式字符串):

ADDRESS(行號):

n : 匹配第幾行
m,n : 從m到n行
m~n :從m行開始。每隔n行
'$' : 最后一行

PATTERN(字符串):

/sometext/ : 匹配有sometext字符串的行


sed -n 'ADDRESS'p filename // print, e.g: sed -n '4'p text.txt。

'ADDRESSp',即將p放在單引號中也是能夠的。或者將單引號換成雙引號"ADDRESSp"也是一樣,下同。

sed -n '/PATTERN/p' filename // e.g: sed -n '/aa/p' text.txt sed -n 'ADDRESS'd filename //delete,不會刪除文件里的內容。僅僅是在標準輸出中刪除該行。

sed -n '/PATTERN/d' filename sed 'ADDRESS a\ some text' filename //append,在匹配行的下一行加入"some text",注意單引號 sed '/PATTERN/ a\ some text' filename sed 'ADDRESS i\ some text' filename // insert,在匹配行前插入一行 sed '/PATTERN/ i\ some text' filename sed 'ADDRESS c\ some text' filename // 替換匹配行 sed 'PATTERN c\ some text' filename sed -n 'ADDRESS'= filename //打印匹配的行號, 僅僅接受一個地址,假設打印多行使用{}括起來,例如以下 sed -n 'ADDRESS,/PATTERN/ { = p }' filename

運行多條sed命令

sed -e: use multiple -e options to build up a script out of many parts。


-e option is optional for sed with single command. sed will execute the each set of command while processing input from the pattern buffer

-e script, --expression=script

add the script to the commands to be executed

樣例:
sed -e 's/foo/bar/' -e '/FOO/d'
解釋:先用bar替換foo,然后再刪除有字符串FOO的行


sed 正則表達式查找和替換

's' 命令應該是sed中最重要的命令,語法例如以下:

sed 'ADDRESSs/REGEXP/REPLACEMENT/FLAGS' filename sed 'PATTERNs/REGEXP/REPLACEMENT/FLAGS' filename

樣例:

sed '1s/aa/bb/' text.txt //用bb替換aa。僅僅在aa第一次出現的地方進行替換 sed '2s/aa/bb/' text.txt //用bb替換aa,僅僅在aa第二次出現的地方進行替換 sed 's/aa/bb/g' text.txt //用bb替換aa。g(global )是全局替換的意思。不加g默認也是全局替換。 sed -n 's/aa/bb/gpw result.txt' text.txt //g全局替換,p打印,w將替換結果寫到result.txt文件里sed 's/...$//' text.txt //正則表達式匹配:將最后位置的前三個字符替換為空。即刪除每行的最后三個字符。

基本正則表達式

. : 代表隨意單個字符

演示樣例: a.b : 表示acb/a*b/a b/a9b… 都能夠但不能是accb/ab

[] : 指定范圍內的單個字符

演示樣例: a[c|d]b : 表示acb/adb 其它的都不能夠

[^ ] : 取反。非指定范圍內的單個字符

演示樣例:a[^d]b : 表示除了adb 其它的acb/abb/a b…都能夠

? : 反復前邊的字符0次或1次

演示樣例:a?b : 表示ab/aab 其它的都不能夠

* : 反復前邊的字符無限次

演示樣例:a* : 表示a/aa/aaa/aaaa… 能夠反復a無限次

.* : 隨意長度的隨意字符

演示樣例:a.* : 表示a/ac/acc/a,b … 能夠是a后邊跟隨意字符

\{m,n\} : 反復前邊的字符至少m次,最多n次。必須加上反斜杠轉義

演示樣例:a{1,3} : 表示 a/aa/aaa 能夠反復a最少1次最多3次

\{m,\} : 反復前邊的字符至少m次,必須加上反斜杠轉義

演示樣例:a{2,} : 表示aa/aaa/aaaa… 能夠反復a最少2次最多不限

\{0,n\} : 反復前邊的字符最多n次,必須加上反斜杠轉義

演示樣例:a{0,3} : 表示 空/a/aa/aaa 能夠反復a最多3次也能夠不反復也就是空

\{m\} : 反復前邊的字符精確匹配m次,必須加上反斜杠轉義

演示樣例:a{2} : 表示 aa 精確匹配反復a2次

^ : 行首匹配,必須出如今行首

演示樣例:^a : 表示全部以a開頭的行

$ : 行尾匹配。必須出如今行尾。注意詞尾與行尾的差別

演示樣例:a$ :表示全部以a結尾的行

^$ : 空白行

\< : 詞首匹配。必須出如今詞首

演示樣例:\< a : 表示a/acv/abcc… 全部以a開頭的單詞

\> : 詞尾匹配,必須出如今詞尾,注意詞尾與行尾的差別

演示樣例:a> : 表示a/cda/cca/… 全部以a結尾的單詞

\(\) : 分組字符,可用\1引用左數第一個(中包括的內容

演示樣例: a\(abc\)\1 表示:aabcabc \1引用了()中的abc

[ :upper: ] : 單個隨意大寫字母,注意[]與:之間有個空格,下同

演示樣例:a[:upper:] 表示:aA/aB/aC… a后邊跟隨意一個大些字母

[ :lower: ] : 單個隨意小寫字母

[ :space: ] : 單個空白字符

[^[ :space: ]] : 單個非空白字符

[ :digit: ] : 單個隨意數字0-9

演示樣例:a[:digit:]b 表示: a0b/a1b/a2b… a和b中間跟隨意一個0-9的數字

[ :alpha: ] : 單個隨意字母

[ :alnum: ] : 單個隨意字母或數字

[:punct:] : 單個隨意特殊符號

擴展正則表達式元字符:
擴展正則表達式簡化了基本正則中的一個元字符。又添加了幾個。
\{m,n\} → {m,n} : 使用方法與基本正則中的一樣

演示樣例:a{1,3} 表示: a/aa/aaa

\(\) → () : 使用方法與基本正則中的一樣

演示樣例:(abc)\1 表示:abcabc

+ : 匹配前邊的字符一次或多次

演示樣例:a+ 表示: a/aa/aaa/aaaa…

| 表示或

演示樣例:(a|b)c 表示: ac/bc

轉載于:https://www.cnblogs.com/mfrbuaa/p/5223027.html

總結

以上是生活随笔為你收集整理的grep 和 sed:linux经常使用工具 amp; 基本正則表達式的全部內容,希望文章能夠幫你解決所遇到的問題。

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