溫馨提示×

溫馨提示×

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

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

文本處理三劍客之sed命令用法

發(fā)布時間:2020-07-28 15:02:51 來源:網(wǎng)絡(luò) 閱讀:491 作者:火柴哈哈 欄目:網(wǎng)絡(luò)安全

1.sed簡介

    sed是一個面向字符流的“非交互式”編輯器,vim編譯中手工對文本的操作動作大部分都可以通過sed命令來完成,這樣就方便在linux下編譯程序批量自動處理文件,例如分析日志文件,修改配置文件等等。


2.sed命令用法

    用法:

        sed [OPTION]...'script'[input-file]


常用選項:

-n :不輸出模式空間中的內(nèi)容至屏幕

-e script, --expression=script: 多點編輯

~]# sed -e 's@^UUID.*@@g' -e '/^[[:space:]]*$/d' /etc/fstab

-f script-file, --file=script-file 每行一個編輯命令

-r, --regexp-extended :支持使用擴(kuò)展的正則表達(dá)式

-i[SUFFIX], --in-place[=SUFFIX] :直接編輯源文件

此操作有風(fēng)險,請慎用!?。?/span>


script:地址定界

(1)空地址:對全文進(jìn)行處理

(2)單地址:

#:指定行

/pattern/ :被此模式所匹配到的每一行

(3)地址范圍:

#,#:從#到#的行

#,+#:

#,/pat1/

/pat1/,/pat2/

$ :最后一行

(4)步進(jìn): ~

1~2 :所有奇數(shù)行

2~2 :所有偶數(shù)行


編輯命令:

d :刪除模式空間中的內(nèi)容

p :顯示模式空間中的內(nèi)容

a \text :在行后面追加文本"text",支持使用\n實現(xiàn)多行追加

i \text :在行前面插入文本"text",支持使用\n實現(xiàn)多行追加

c \text :把匹配到的行替換為此處指定的文本"test"

w /PATH/TO/SOMEFILE :保存模式空間匹配到的行到指定的文件中

= :為模式匹配到的行打印行號

! :條件取反 

            格式: 地址定界!編輯命令

r \PATH/TO/SOMEFILE :讀取指定文件的內(nèi)容至當(dāng)前文件被模式匹配到的行后面,一般用于文件合并

s/// :查找替換,其分隔符可自行指定,常用的有s@@@,s###等

替換標(biāo)記:

g :全局替換

                p :顯示替換成功的行

w /PATH/TO/SOMEFILE :將替換成功的結(jié)果保存至指定文件中


用法示例:

1.在/etc/fstab文件中UUID的行前面加上注釋信息

~]# sed  '/^UUID/i \this is UUID' /etc/fstab

2.刪除某文件的所有空紅

~]# sed '/^$/d' FILE

3.刪除/boot/grub2/grub.cfg文件中所有以空白字符開頭的行的行首的所有空白字符

~]# sed 's@^[[:space:]]\+@@g' grub.cfg

4.在/etc/fstab文件的行尾追加信息

~]# sed  '$a \sed command end' /etc/fstab

3.高級編輯命令

    h : 把模式空間中的內(nèi)容覆蓋至保持空間中

H :把模式空間中的內(nèi)容追加至保持空間中

g : 把保持空間中的內(nèi)容覆蓋至模式空間中

G : 把保持空間中的內(nèi)容追加至模式空間中

x : 把模式空間中的內(nèi)容與保持空間中互換

n : 覆蓋讀取匹配到的行的下一行至模式空間中

N : 追加讀取匹配到的行的下一行至模式空間中

d : 刪除模式空間中的行

D :刪除多行模式空間中的所有行


用法示例:

~]# sed -n 'n;p' FILE     :顯示偶數(shù)行,";"用來分隔多個命令
~]# sed '1!G;h;$!d' FILE   :逆序顯示文件的內(nèi)容
~]# sed '!$d' FILE         : 取出最后一行
~]# sed '$!N;$!D' FILE     : 取出文件后兩行
~]# sed '/^$/d;G' FILE     : 刪除原有的所有的空白行,而后為所有的非空白行后添加一個空白行
~]# sed 'n;d' FILE         :顯示奇數(shù)行
~]# sed 'G' FILE           :在原有的每行后方添加一個空白行


4.實戰(zhàn)訓(xùn)練

    實現(xiàn)每周備份一次一周內(nèi)被修改過的/etc/目錄下的所有文件

~]# vim /backups/bf.sh
#!/bin/bash
#
#
dir=etc-`date +%F-%H-%M-%S`
mkdir -p /backups/$dir
for file in `find /etc/* -mtime -7`;do
        cp -r $file /backups/$dir &> /dev/null
done
cd /backups && tar -Jcf ${dir}.tar.xz $dir && rm -rf /backups/$dir

~]# crontab -e
0 0 * * 1 /bin/bash /backups/bf.sh


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI