91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Shell編程之正則表達式三劍客——sed工具

發布時間:2020-08-03 23:52:09 來源:網絡 閱讀:329 作者:一拳超人007 欄目:系統運維

sed工具概述

擅長對數據行進行處理,sed是一種流編輯器,處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出。利用sed命令可以將數據行進行替換、刪除、新增、選取等特定工作。

sed命令常見用法

sed [選項] '操作' 參數
sed [選項] -f scriptfile 參數
常見的sed命令選項主要包含以下幾種

-e 或--expression=:表示用指定命令或者腳本來處理輸入的文本文件。
-f 或--file=:表示用指定的腳本文件來處理輸入的文本文件。
-h 或--help:顯示幫助。
-n、--quiet 或 silent:表示僅顯示處理后的結果。
-i:直接編輯文本文件。

“操作”用于指定對文件操作的動作行為,也就是 sed 的命令。通常情況下是采用的“[n1[,n2]]”操作參數的格式。n1、n2 是可選的,不一定會存在,代表選擇進行操作的行數

a:增加,在當前行下面增加一行指定內容。
c:替換,將選定行替換為指定內容。
d:刪除,刪除選定的行。
i:插入,在選定行上面插入一行指定內容。
p:打印,如果同時指定行,表示打印指定行;如果不指定行,則表示打印所有內容;如果有非打印字符,則以 ASCII 碼輸出。其通常與“-n”選項一起使用。
s:替換,替換指定字符。
y:字符轉換。

用法示例

1,輸出符合條件的文本(p表達正常輸出)

sed -n 'p' test.txt 輸出所有內容

[root@localhost ~]# sed -n 'p' test.txt 
the football
you are best boy
PI=3.1415926535897
a wood cross

hello.
the boy

sed -n '2p' test.txt 輸出第2行的內容
sed -n '2,5p' test.txt 輸出2到5行的內容
sed -n 'p;n' test.txt 輸出所有奇數行的內容,n表示讀入下一行資料
sed -n 'n;p' test.txt 輸出所有偶數行的內容

[root@localhost ~]# sed -n 'p;n' test.txt
the football
PI=3.1415926535897
the boy
[root@localhost ~]# sed -n 'n;p' test.txt 
you are best boy
a wood cross
hello.

sed -n '2,5{p;n}' test.txt 輸出2到5行中的奇數行
此時的奇數行是原來的第二行,是按照選擇的行數的奇偶數決定的

[root@localhost ~]# sed -n '2,5{p;n}' test.txt 
you are best boy
a wood cross

以上是 sed 命令的基本用法,sed 命令結合正則表達式時,格式略有不同,正則表達式以“/”包圍。例如,以下操作是 sed 命令與正則表達式結合使用的示例。

[root@localhost ~]# sed -n '/the/p' test.txt  輸出包含the的行 
the football
the boy

sed -n '4,/the/p' test.txt 輸出從第四行到包含第一個the的行

[root@localhost ~]# sed -n '4,/the/p' test.txt
a wood cross

hello.
the boy

sed -n '/the/=' test.txt 輸出包含the的所在行號

[root@localhost ~]# sed -n '/the/=' test.txt
1
7

sed -n '/^PI/p' test.txt 輸出以PI開頭的行
sed -n '/[0-9]$/p' test.txt 輸出以數字為結尾的行
sed -n '/\<wood\>/p' test.txt 輸出包含單詞wood的行

[root@localhost ~]# sed -n '/^PI/p' test.txt
PI=3.1415926535897
[root@localhost ~]# sed -n '/[0-9]$/p' test.txt
PI=3.1415926535897
[root@localhost ~]# sed -n '/\<wood\>/p' test.txt
a wood cross
2,刪除符合條件的文本(d)
下面的命令中nl命令用于計算文件的行數,結合該命令以更加直觀查看到命令執行的結果

nl test.txt | sed '3d' 刪除第三行
nl test.txt | sed '3,5d' 刪除3到5行
nl test.txt | sed '/cross/d' 刪除帶有cross的行 不包含用!取反

[root@localhost ~]# nl test.txt | sed '3d'
     1  the football
     2  you are best boy
     4  a wood cross

     5  hello.
     6  the boy
[root@localhost ~]# nl test.txt | sed '3,5d'
     1  the football
     2  you are best boy
     5  hello.
     6  the boy
[root@localhost ~]# nl test.txt | sed '/\<hello\>/d'
     1  the football
     2  you are best boy
     3  PI=3.1415926535897
     4  a wood cross

     6  the boy

sed '/^[a-zA-Z]/d' test.txt 刪除以字母開頭的行
sed '/.$/d' test.txt 刪除以.結尾的行
sed '/^$/d' test.txt 刪除空格的行

[root@localhost ~]# sed '/^[a-zA-Z]/d' test.txt

[root@localhost ~]# sed '/\.$/d' test.txt
the football
you are best boy
PI=3.1415926535897
a wood cross

the boy
[root@localhost ~]# sed '/^$/d' test.txt
the football
you are best boy
PI=3.1415926535897
a wood cross
hello.
the boy

注意: 若是刪除重復的空行,即連續的空行只保留一個, 執行“ sed –e ‘/^$/{n;/^$/d}’test.txt”命令即可實現。其效果與“cat -s test.txt”相同,n 表示讀下一行數據。

3,替換符合條件的文本

s(字符串替換)
c(整行/整塊替換)
y(字符轉換)命令選項,常見的用法如下所示。
Shell編程之正則表達式三劍客——sed工具

4,遷移符合條件的文本

H,復制到剪貼板;
g、G,將剪貼板中的數據覆蓋/追加至指定行;
w,保存為文件;
r,讀取指定文件;
a,追加指定內容。

Shell編程之正則表達式三劍客——sed工具

5,使用腳本編輯文件

使用 sed 腳本,將多個編輯指令存放到文件中(每行一條編輯指令),通過“-f”選項來調用。

例如:sed '1,5{H;d};17G' test.txt //將第 1~5 行內容轉移至第 17 行后
以上操作改用腳本文件方式
[root@localhost ~]# vi opt.list 1,5H
1,5d
17G
[root@localhost ~]# sed -f opt.list test.txt
6,sed直接操作文件示例

編寫一個腳本,用來調整 vsftpd 服務配置:禁止匿名用戶,但允許本地用戶(也允許寫入)。
Shell編程之正則表達式三劍客——sed工具

謝謝閱讀!!!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盘锦市| 巴里| 秭归县| 灵武市| 百色市| 永泰县| 正蓝旗| 长岛县| 平山县| 莱阳市| 炉霍县| 耿马| 临猗县| 黄梅县| 邻水| 普兰县| 石景山区| 东安县| 汝南县| 桂平市| 庄浪县| 玛多县| 洛扎县| 开阳县| 水富县| 合江县| 通榆县| 新乡县| 闻喜县| 宁晋县| 柞水县| 井冈山市| 文成县| 桓仁| 辉县市| 商河县| 巴中市| 巴彦淖尔市| 青铜峡市| 乌兰浩特市| 海淀区|