中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Linux 流編輯--Sed命令及語法

發布時間:2020-07-31 13:35:16 來源:網絡 閱讀:173 作者:低調的男孩 欄目:系統運維

Sed介紹:

sed是文本處理工具,讀取文本內容,根據指定的條件進行處理如刪除、替換、添加等
sed是一種流編輯器,它是文本處理中非常中的工具,能夠完美的配合正則表達式使用,功能不同凡響。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有 改變,除非你使用重定向存儲輸出。
Sed 主要用來自動編輯一個或多個文件;簡化對文件的反復操作;編寫轉換程序等。

工作流程圖

Linux 流編輯--Sed命令及語法

Sed三大功能:

1.讀取:sed 從輸入流(文件、管道、標準輸入)中讀取一行內容并存儲到臨時的緩沖區中;
2.執行:默認情況下,所有的 sed 命令都在模式空間中順序地執行,除非指定了行的地址,否則 sed 命令將會在所有的行上依次執行;
3.顯示:發送修改后的內容到輸出流,再發送數據后,模式空間將會被清空。

注意:默認情況下,所有的 sed 命令都是在模式空間內執行的,因此輸入的文件并不會發生任何變化,除非是用重定向存儲輸出。

Sed命令兩種格式:

其中,“參數”是指操作的目標文件,當存在多個操作對象時用,文件之間用逗號“,”分隔;而 scriptfile 表示腳本文件,需要用“-f”選項指定,當腳本文件出現在目標文件之前時,表示通過指定的腳本文件來處理輸入的目標文件。
sed [選項] ‘操作’ 參數
sed [選項] -f scriptfile 參數

常見的 Sed命令選項:

語法:sed [options] [script] [inputfile]
-e :允許執行多個腳本;
-f :從腳本文件中讀取命令;
-h :顯示幫助;
-n :取消默認輸出;
-i :直接修改原始文件;
-l: 指定行長度;
-u: 最低限度的緩存輸入和輸出
-r:在腳本中使用正則表達式

常見的操作選項:

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

Sed 元字符集

^: 匹配行開始,如:/^sed/匹配所有以sed開頭的行。
$ : 匹配行結束,如:/sed$/匹配所有以sed結尾的行。
. : 匹配一個非換行符的任意字符,如:/s.d/匹配s后接一個任意字符,最后是d。

: 匹配0個或多個字符,如:/*sed/匹配所有模板是一個或多個空格后緊跟sed的行。
[] : 匹配一個指定范圍內的字符,如/[ss]ed/匹配sed和Sed。
[^] : 匹配一個不在指定范圍內的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一個字母開頭,緊跟ed的行。
(..) : 匹配子串,保存匹配的字符,如s/(love)able/\1rs,loveable被替換成lovers。
& : 保存搜索字符用來替換其他字符,如s/love/&/,love這成love。
\< : 匹配單詞的開始,如:/\<love/匹配包含以love開頭的單詞的行。
\> : 匹配單詞的結束,如/love\>/匹配包含以love結尾的單詞的行。
x{m} : 重復字符x,m次,如:/0{5}/匹配包含5個0的行。
x{m,} : 重復字符x,至少m次,如:/0{5,}/匹配至少有5個0的行。
x{m,n} : 重復字符x,至少m次,不多于n次,如:/0{5,10}/匹配5~10個0的行。

Sed 常用操作

選擇文本

Linux 流編輯--Sed命令及語法

sed -n 5p aa.txt

Linux 流編輯--Sed命令及語法

sed -n '2p,5p' aa.txt #選擇第2到第5行

Linux 流編輯--Sed命令及語法

sed -n '2p;5p' aa.txt #選擇第2和第5行

Linux 流編輯--Sed命令及語法

sed -n '/^5/p' aa.txt #以5開頭的行

Linux 流編輯--Sed命令及語法

sed -n '$p' aa.txt #打印最后一行

Linux 流編輯--Sed命令及語法

sed -n '1~2p' aa.txt #表示從第一行開始,沒個行就打印出來

Linux 流編輯--Sed命令及語法

sed -n '/cc$/p' aa.txt #以cc結尾的行

Linux 流編輯--Sed命令及語法

sed -n '/fff/,10p' aa.txt #表示從含油字符串fff到第10行打印

Linux 流編輯--Sed命令及語法

備注:加上-n只顯示出來,不會改變原文件,若要改變原文件,加上sed -i 。

替換文本

g : 獲得內存緩沖區的內容,并替代當前模板塊中的文本。
p : 打印模板塊的行。
w : file 寫并追加模板塊到file末尾。

例子:

sed 's/e/E/' aa.txt

Linux 流編輯--Sed命令及語法

sed 's/e/E/g' aa.txt #全文中e都替換成E

Linux 流編輯--Sed命令及語法

sed '1,5s/e/E/g' aa.txt #第一行到第5行間e都替換成E

Linux 流編輯--Sed命令及語法

sed '6,/^6/s/f/E/g' aa.txt #以6開頭的行f都替換成E
Linux 流編輯--Sed命令及語法

sed '/^6/s//E/g' aa.txt #以6開頭的行都替換成E

Linux 流編輯--Sed命令及語法

備注:后面不加上g,只會替換每行第一次會出現的字符串,sed 不會改變原文件,參數之間不一定非要使用斜線分割,也可以使用除空格,換行外的任意字符若要改變原文件,加上 -i 。

刪除文本

sed -e '3d' aa.txt #刪除第三行

Linux 流編輯--Sed命令及語法

sed -e '3,5d' aa.txt #刪除3到5行

Linux 流編輯--Sed命令及語法

sed -e '$d' aa.txt #刪除最后一行

Linux 流編輯--Sed命令及語法

sed -e '1d;5d' aa.txt #刪除1,5行

Linux 流編輯--Sed命令及語法

sed -e '1~2d' aa.txt #刪除奇數行

Linux 流編輯--Sed命令及語法

sed -e '0~2d' aa.txt #刪除偶數行

Linux 流編輯--Sed命令及語法

sed -e '1,/^6/d' aa.txt #刪除1到以6開頭的行

Linux 流編輯--Sed命令及語法

sed -e '5,$d' aa.txt #刪除從5行到最后

Linux 流編輯--Sed命令及語法

sed '^$d' aa.txt #刪除空白行

備注:刪除原文件內容要加上-i

追加文本

sed '3a20200229' aa.txt #第三行后追加

Linux 流編輯--Sed命令及語法

sed '/^8/a2020008' aa.txt #以8開頭的行后追加

Linux 流編輯--Sed命令及語法

備注:使用echo也可以追加,但> ,>>不一樣。

echo "9988" >>aa.txt 在文本最后追加,
等于sed '$a9988' aa.txt
echo -e "999" >aa.txt 直接覆蓋原文

插入文本

sed '3i2128' aa.txt #第三行插入

Linux 流編輯--Sed命令及語法

sed '/^9/i2128' aa.txt #以9開頭行插入

Linux 流編輯--Sed命令及語法

sed '$i2348' aa.txt #末行插入,實際上是倒數第二行

Linux 流編輯--Sed命令及語法

組合命令

1.使用-e選項

sed -n -e 's/c/C/g' -e '2,3p' aa.txt

Linux 流編輯--Sed命令及語法

2.使用分號分割

sed -e 's/d/D/g;3i6868p' aa.txt

Linux 流編輯--Sed命令及語法

3.對一個地址使用多個子命令

sed -n '1,5 {
s/c/C/g
s/e/E/g
2i5566
p
}' aa.txt

Linux 流編輯--Sed命令及語法

向AI問一下細節

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

AI

博野县| 湖北省| 军事| 淮北市| 神农架林区| 南漳县| 紫阳县| 云南省| 三门峡市| 克东县| 原平市| 米泉市| 文山县| 佛冈县| 合肥市| 石门县| 金塔县| 三门县| 桂东县| 昌宁县| 鄂温| 家居| 芷江| 博客| 定日县| 察隅县| 县级市| 出国| 延长县| 百色市| 衡南县| 苍溪县| 宾阳县| 绍兴市| 丹东市| 黄大仙区| 聂拉木县| 京山县| 龙南县| 朝阳区| 志丹县|