提供低價(jià)網(wǎng)站建設(shè)seo5
sed編輯器
- sed編輯器
- sed基礎(chǔ)語(yǔ)法
- sed查詢
- sed刪除
- sed 替換
- sed 插入
sed編輯器
- sed是文本處理工具,依賴于正則表達(dá)式,可以讀取文本內(nèi)容,工具指定條件對(duì)數(shù)據(jù)進(jìn)行添加、刪除、替換等操作,被廣泛應(yīng)用于shell腳本,以完成自動(dòng)化處理任務(wù)。
- sed在處理數(shù)據(jù)時(shí)默認(rèn)不直接修改原文件,而是把當(dāng)前處理的行存儲(chǔ)在臨時(shí)緩存區(qū)中,所有指令都在緩沖區(qū)中操作,處理完成后,把緩沖區(qū)內(nèi)容默認(rèn)輸出到屏幕,接著處理下一行內(nèi)容,這樣不斷重復(fù),直到文件末尾,文件本身內(nèi)容沒(méi)有改變
- sde是一種流編輯器,流編輯器會(huì)在編輯器處理數(shù)據(jù)之前基于預(yù)先提供的一組規(guī)則來(lái)編輯數(shù)據(jù)流。
- 編輯器可以根據(jù)命令來(lái)處理數(shù)據(jù)流中的數(shù)據(jù),這些命令要么從命令行中輸入,要么存儲(chǔ)在一個(gè)命令文本文件中。
sed基礎(chǔ)語(yǔ)法
-
命令語(yǔ)法:
- sed 選項(xiàng) ‘編輯命令’ 文件1 文件2
-
常用選項(xiàng)
選項(xiàng) | 作用 |
---|---|
-e | 指定要執(zhí)行的命令,只有一個(gè)編輯命令時(shí)可省略。 |
-n | 只輸出處理后的行,讀入時(shí)不顯示 |
-i | 直接編輯文件,而不輸出結(jié)果 |
-f | 表示用指定的腳本文件來(lái)處理輸入的文本文件 |
-h | 顯示幫助 |
-
編輯指令格式:
- 【地址1】 【,地址2】 操作 【參數(shù)】
- 與grep一樣,Sed在文件查找是也可以使用正則表達(dá)式和各種元字符。這里的“地址”就可以是正則表達(dá)式,也可以是數(shù)字、$,如果沒(méi)有地址就代表是所有的行。
-
常用的“操作”及作用
指令 | 作用 |
---|---|
p | 輸出指定的行 |
d | 刪除指定的行 |
s | 字串替換,格式:‘行范圍 s/舊字符串/新字符串/g’ |
r | 讀取指定文件 |
w | 保存為文件 |
i | 插入,在當(dāng)前行前面插入一行或多行 |
a | 插入,在當(dāng)前行下面插入一行或多行 |
q | 表示退出 |
H | 復(fù)制 |
G | 粘貼 |
sed查詢
-
sed -n ‘行號(hào)p’ :查看指定行信息
-
sed ‘5q’ :打印前5行信息后退出,q表示退出
-
sed -n ‘行1,行2p’ :查看從行1到行2的信息
-
sed -n ‘行1,+np’ :查看行1及行1后的n行信息
-
sed -n ‘3 {p;n;n;p}’ :n可以幫我們實(shí)現(xiàn)換行,p實(shí)現(xiàn)打印
-
sed -n ‘/字符串/ p’ :打印包含字符串的行
-
sed -n ‘/正則表達(dá)式/ p’ :打印所有包含正則能夠匹配到的內(nèi)容的行
使用演示:
sed -n ‘行號(hào)p’ :查看指定行信息
sed -n ‘行1,行2p’ :查看從行1到行2的信息
sed -n ‘行1,+np’ :查看行1及行1后的n行信息
sed -n ‘3 {p;n;n;p}’ :n可以幫我們實(shí)現(xiàn)換行,p實(shí)現(xiàn)打印
sed -n ‘/字符串/ p’ :打印包含字符串的行
sed -n ‘/正則表達(dá)式/ p’ :打印所有包含正則能夠匹配到的內(nèi)容的行
sed刪除
sed ‘行號(hào) d’ : 刪除指定行號(hào)的行
sed ‘行1,行2 d’ : 刪除行1與行2之間的行
sed ‘/字符串/ d’ :刪除包含字符串的行
sed ‘/正則表達(dá)式/ d’ :刪除所有包含正則能夠匹配的到的內(nèi)容的行
sed ‘行號(hào),/字符串/ d’ :刪除從指定行到第一個(gè)包含字符串的行
sed ‘/字符串1/,/字符串2/ d’ :從第一個(gè)字符串1的行開(kāi)始刪除到 第一個(gè)掃描到的字符串2的行,之后會(huì)繼續(xù)掃描包含字符串1的行,然后繼續(xù)執(zhí)行刪除和掃描字符串2的操作
使用演示:
sed ‘行號(hào) d’ : 刪除指定行號(hào)的行
sed ‘行1,行2 d’ : 刪除行1與行2之間的行
sed ‘/字符串/ d’ :刪除包含字符串的行
sed ‘/正則表達(dá)式/ d’ :刪除所有包含正則能夠匹配的到的內(nèi)容的行
sed ‘行號(hào),/字符串/ d’ :刪除從指定行到第一個(gè)包含字符串的行
sed ‘/字符串1/,/字符串2/ d’ :從第一個(gè)字符串1的行開(kāi)始刪除到 第一個(gè)掃描到的字符串2的行,之后會(huì)繼續(xù)掃描包含字符串1的行,然后繼續(xù)執(zhí)行刪除和掃描字符串2的操作
sed 替換
- sed ‘s/舊字符/新字符/’ :替換每行匹配到的第一個(gè)舊字符
- sed ‘s/舊字符/新字符/n’ : 替換每行匹配到的第n個(gè)舊字符
- sed ‘s/舊字符/新字符/g’ :替換每行匹配到的所有舊字符
- sed ‘s/舊字符/新字符/w file’ :把替換后的行內(nèi)容保存到指定文件
- sed -n ‘s/舊字符/新字符/gp’ > file
- sed ‘行號(hào) s/舊字符/新字符/’ : 替換指定行的第一個(gè)匹配到的的字符串 最后加上g就是替- 換所有匹配到的舊字符
- sed ‘行1,行2 s/舊字符/新字符/g’ :替換行1與行2區(qū)間的匹配行的對(duì)應(yīng)的字符串
- sed ‘/字符串/ s/舊字符/新字符/g’
- sed ‘/正則表達(dá)式/ s/舊字符/新字符/g’
- s/xx/xx/:后面的替換分隔符可以使用其他字符代替,需要確保三個(gè)分隔字符保持一致
- sed ‘行號(hào)c xxxx’ 替換指定行的整行內(nèi)容
- sed ‘y/abc/123/’ 替換所有相對(duì)應(yīng)的字符功能類似tr
使用演示:
== sed ‘s/舊字符/新字符/替換選項(xiàng)’ 替換選項(xiàng)可以指定第幾個(gè)舊字符進(jìn)行替換,g表示全行替換==
sed ‘s/舊字符/新字符/w file’ :把替換后的行內(nèi)容保存到指定文件
== sed -n ‘s/舊字符/新字符/gp’ > file ==
sed ‘行號(hào) s/舊字符/新字符/’ : 替換指定行的第一個(gè)匹配到的的字符串 最后加上g就是替- 換所有匹配到的舊字符
sed ‘行1,行2 s/舊字符/新字符/g’ :替換行1與行2區(qū)間的匹配行的對(duì)應(yīng)的字符串
sed ‘/字符串/ s/舊字符/新字符/g’
sed ‘/正則表達(dá)式/ s/舊字符/新字符/g’
s/xx/xx/:后面的替換分隔符可以使用其他字符代替,需要確保三個(gè)分隔字符保持一致
sed ‘行號(hào)c xxxx’ 替換指定行的整行內(nèi)容
sed ‘y/abc/123/’ 替換所有相對(duì)應(yīng)的字符功能類似tr
sed 插入
-
sed ‘行號(hào)i xxxx’ :在指定行上面插入xxxx
-
sed ‘行號(hào)a xxxx’ :在指定行下面插入xxxx
-
sed ‘行號(hào)r file’ :在指定行下面讀取文件內(nèi)容
-
sed ‘/root/{H;d};$G’ /etc/passwd :將包含root的行剪切到末尾,H表示復(fù)制;G表示粘貼
-
sed ‘1,2H;3,4G’ /etc/passwd :將1到2行復(fù)制到3和4行下面
-
echo “111222333” | sed -r ‘s/(111)(222)/\2\1/’ :將字符111和222互換位置
使用演示:
sed ‘行號(hào)i xxxx’ :在指定行上面插入xxxx
sed ‘行號(hào)a xxxx’ :在指定行下面插入xxxx
sed ‘行號(hào)r file’ :在指定行下面讀取文件內(nèi)容
sed ‘/行數(shù)/{H;d};$G’ :將指定行剪切到末尾,H表示復(fù)制;G表示粘貼
sed ‘1,2H;3,4G’ :將1到2行復(fù)制到3和4行下面
echo “111222333” | sed -r ‘s/(111)(222)/\2\1/’ :將字符111和222互換位置