方法:1、設(shè)置參數(shù)“c”,c的后面可以接字串,這些字串可以替換指定的行,語法為“ sed '行數(shù)c 替換后內(nèi)容'”;2、設(shè)置參數(shù)“s”,可以直接進(jìn)行替換工作,語法為“sed 's/要被取代的字串/新的字串/g'”。
本教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。
linux中sed命令怎么實現(xiàn)替換
Linux sed 命令是利用腳本來處理文本文件。
sed 可依照腳本的指令來處理、編輯文本文件。
Sed 主要用來自動編輯一個或多個文件、簡化對文件的反復(fù)操作、編寫轉(zhuǎn)換程序等。
語法
sed [-hnV][-e<script>][-f<script文件>][文本文件]
參數(shù)說明:
-
-e<script>或–expression=<script> 以選項中指定的script來處理輸入的文本文件。
-
-f<script文件>或–file=<script文件> 以選項中指定的script文件來處理輸入的文本文件。
-
-h或–help 顯示幫助。
-
-n或–quiet或–silent 僅顯示script處理后的結(jié)果。
-
-V或–version 顯示版本信息。
動作說明:
-
a :新增, a 的后面可以接字串,而這些字串會在新的一行出現(xiàn)(目前的下一行)~
-
c :取代, c 的后面可以接字串,這些字串可以取代 n1,n2 之間的行!
-
d :刪除,因為是刪除啊,所以 d 后面通常不接任何東東;
-
i :插入, i 的后面可以接字串,而這些字串會在新的一行出現(xiàn)(目前的上一行);
-
p :打印,亦即將某個選擇的數(shù)據(jù)印出。通常 p 會與參數(shù) sed -n 一起運行~
-
s :取代,可以直接進(jìn)行取代的工作哩!通常這個 s 的動作可以搭配正規(guī)表示法!例如 1,20s/old/new/g 就是啦!
示例如下:
將第2-5行的內(nèi)容取代成為『No 2-5 number』呢?
[root@www ~]# nl /etc/passwd | sed '2,5c No 2-5 number' 1 root:x:0:0:root:/root:/bin/bash No 2-5 number 6 sync:x:5:0:sync:/sbin:/bin/sync .....(后面省略).....
除了整行的處理模式之外, sed 還可以用行為單位進(jìn)行部分?jǐn)?shù)據(jù)的搜尋并取代?;旧?sed 的搜尋與替代的與 vi 相當(dāng)?shù)念愃疲∷悬c像這樣:
sed 's/要被取代的字串/新的字串/g'
先觀察原始信息,利用 /sbin/ifconfig 查詢 IP
[root@www ~]# /sbin/ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:90:CC:A6:34:84 inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::290:ccff:fea6:3484/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 .....(以下省略).....
本機的ip是192.168.1.100。
將 IP 前面的部分予以刪除
[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' 192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
接下來則是刪除后續(xù)的部分,亦即: 192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
將 IP 后面的部分予以刪除
[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g' 192.168.1.100