Sed是文本處理工具,依賴于正則表達(dá)式,可以讀取文本內(nèi)容,根據(jù)指定條件對(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)容并沒有做任何改變。
一、Sed三大功能:
(1)讀?。簊ed 從輸入流(文件、管道、標(biāo)準(zhǔn)輸入)中讀取一行內(nèi)容并存儲(chǔ)到臨時(shí)的緩沖區(qū)中;
(2)執(zhí)行:默認(rèn)情況下,所有的 sed 命令都在模式空間中順序地執(zhí)行,除非指定了行的地址,否則 sed 命令將會(huì)在所有的行上依次執(zhí)行;
(3)顯示:發(fā)送修改后的內(nèi)容到輸出流,再發(fā)送數(shù)據(jù)后,模式空間將會(huì)被清空。
***注意:默認(rèn)情況下,所有的 sed 命令都是在模式空間內(nèi)執(zhí)行的,因此輸入的文件并不會(huì)發(fā)生任何變化,除非是用重定向存儲(chǔ)輸出。
二、Sed命令兩種格式:
其中,“參數(shù)”是指操作的目標(biāo)文件,當(dāng)存在多個(gè)操作對(duì)象時(shí)用,文件之間用逗號(hào)“,”分隔;而 scriptfile 表示腳本文件,需要用“-f”選項(xiàng)指定,當(dāng)腳本文件出現(xiàn)在目標(biāo)文件之前時(shí),表示通過指定的腳本文件來處理輸入的目標(biāo)文件。
sed [選項(xiàng)] ‘操作’ 參數(shù)
sed [選項(xiàng)] -f scriptfile 參數(shù)
(1)常見的 sed命令選項(xiàng):
-e :表示用指定命令或者腳本來處理輸入的文本文件;
-f :表示用指定的腳本文件來處理輸入的文本文件;
-h :顯示幫助;
-n :表示僅顯示處理后的結(jié)果;
-i :直接編輯文本文件;
(2)常見的操作選項(xiàng):
a:增加,在當(dāng)前行下面增加一行指定內(nèi)容;
c:替換,將選定行替換為指定內(nèi)容;
d:刪除,刪除選定的行;
i :插入,在選定行上面插入一行指定內(nèi)容;
p:打印,如果同時(shí)指定行,表示打印指定行;如果不指定行,則表示打印所有內(nèi)容,通常與 -n選項(xiàng)一起使用;
s :替換,替換指定字符;
y :字符轉(zhuǎn)換;
一、awk簡(jiǎn)介:
在 Linux/UNIX 系統(tǒng)中,awk 是一個(gè)功能強(qiáng)大的編輯工具,逐行讀取輸入文本,并根據(jù)指定的匹配模式進(jìn)行查找,對(duì)符合條件的內(nèi)容進(jìn)行格式化輸出或者過濾處理,可以在無交互的情況下實(shí)現(xiàn)相當(dāng)復(fù)雜的文本操作,被廣泛應(yīng)用于 Shell 腳本,完成各種自動(dòng)化配置任務(wù)。
二、常見用法:
單引號(hào)加上大括號(hào)“{}”用于設(shè)置對(duì)數(shù)據(jù)進(jìn)行的處理動(dòng)作。awk 可以直接處理目標(biāo)文件,也可以通過“-f”讀取腳本對(duì)目標(biāo)文件進(jìn)行處理。
awk 將文本文件中的一行視為一個(gè)記錄,而將一行中的某一部分(列)作為記錄中的一個(gè)字(域)。為了操作這些不同的字段,awk 借用 shell 中類似于位置變量的方法, 用$1、$2、$3…順序地表示行(記錄)中的不同字段。另外 awk 用$0 表示整個(gè)行(記錄)。不同的字段之間是通過指定的字符分隔。awk 默認(rèn)的分隔符是空格。awk 允許在命令行中用“-F 分隔符”的形式來指定分隔符。
awk 【選項(xiàng)】‘模式或條件 {編輯指令}’ 文件1 文件2
awk -f 腳本文件 文件1 文件2
1)特殊的內(nèi)建變量(可直接用)
FS:指定每行文本的字段分隔符,默認(rèn)為空格或制表位(tab鍵);
NF:當(dāng)前處理的行的字段個(gè)數(shù);
NR:當(dāng)前處理的行的行號(hào)(序數(shù));
$0:當(dāng)前處理的行的整行內(nèi)容;
$n:當(dāng)前處理行的第 n 個(gè)字段(第 n 列);
FILENAME:被處理的文件名;
RS:數(shù)據(jù)記錄分隔,默認(rèn)為\n,即每行為一條記錄;
(2)關(guān)系運(yùn)算符號(hào):只有當(dāng)條件為真,才執(zhí)行指定的動(dòng)作。
大于(>);小于(<);大于等于(>=);小于等于(<=);
等于(==)、不等于(!=);
&&(與)、||(或)、!(非);
加(+)、減(-)、乘(*)、除(/)、取余(%)、乘方(^);
一、grep命令
-n: 表示顯示行號(hào)
-i : 表示不區(qū)分大小寫刷選
-v : 表示方向查找
(1)查找特定的字符:
grep -n 'the' abc.txt //查找有the的行,并顯示出行號(hào)
1
grep -in ‘the’ abc.txt //不區(qū)分大小寫查找有the的行,并顯示行號(hào)
1
如果是想查找不包含the的行,-vn選項(xiàng)即可:
grep -vn ‘the’ abc.txt //查找不包括the的行,并顯示出行號(hào)
1
(2)中括號(hào) [ ] 查找集合字符:
例如:當(dāng)我們需要查找兩個(gè)字符 “aboyz” 和 “abiyz” 這兩個(gè)字符時(shí),其中ab和yz都是相同的,可以利用 [ ]來匹配字符,[ ]中不論有幾個(gè)字符,都僅代表一個(gè)字符,
元字符
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。