sed編輯器

sed: Stream EDitor, 行編輯器; 

用法:

sed [option]… ‘script’ inputfile…

script:

地址命令 

常用選項:

-n:不輸出模式中的內容至屏幕;

-e: 多點編輯;

-f /PATH/TO/SCRIPT_FILE: 從指定文件中讀取編輯腳本;

-r: 支持使用擴展正則表達式;

-i: 原處編輯;

例一:,刪除文件已UUID開關的命令行

[root@localhost ~]# sed '/^UUID/d' /etc/fstab 

地址定界:

(1) 不給地址:對全文進行處理;

(2) 單地址:

#: 指定的行;

/pattern/:被此處模式所能夠匹配到的每一行;

(3) 地址范圍:

#,#

#,+#

/pat1/,/pat2/

#,/pat1/

(4) ~:步進

1~2

2~2

例一:指定第一行到第10行刪除

[root@localhost ~]# sed '1,10d' /etc/fstab 

編輯命令:

d: 刪除

p: 顯示模式空間中的內容

a \text:在行后面追加文本;支持使用\n實現多行追加;

i \text:在行前面插入文本;支持使用\n實現多行插入;

c \text:替換行為單行或多行文本;

w /path/to/somefile: 保存模式空間匹配到的行至指定文件中;

r /path/from/somefile:讀取指定文件的文本流至模式空間中匹配到的行的行后;

=: 為模式空間中的行打印行號;

!: 取反條件;

s///:支持使用其它分隔符,s@@@s###;

替換標記:

g: 行內全局替換;

p: 顯示替換成功的行;

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

例一:在UUID文本后追加文本

[root@localhost ~]# sed '/^UUID/a \hello dongzhikang' /etc/fstab

例二:將UUID命令替換結果保存到指定文件中

[root@localhost ~]# sed '/UUID/w /tmp/fstab.txt' /etc/fstab

例三:模式空間匹配到的行至指定文件中

[root@localhost ~]# sed '6r/etc/lssus' /etc/fstab

例四:顯示符合條件的行號

[root@localhost ~]# sed '/^UUID/=' /etc/fstab
#
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
10
UUID=d928b19c-a5b3-4b6d-918c-2952b6353c69 /boot                   ext4    defaults        1 2

例一:替換以p開關的c結尾的加er

[root@localhost etc]# sed 's@p..c@&er@' /etc/fstab 

練習1:刪除/boot/grub/grub.conf文件中所有以空白開頭的行行首的空白字符;

~]# sed ‘s@^[[:space:]]\+@@’ /etc/grub2.cfg 

練習2:刪除/etc/fstab文件中所有以#開頭,后面至少跟一個空白字符的行的行首的#和空白字符;

~]# sed ‘s@^#[[:space:]]\+@@’ /etc/fstab 

練習3echo一個絕對路徑給sed命令,取出其基名;取出其目錄名;

~]# echo “/etc/sysconfig/” | sed ‘s@[^/]\+/\?$@@’ 

高級編輯命令:

h: 把模式空間中的內容覆蓋至保持空間中;

H:把模式空間中的內容追加至保持空間中;

g: 從保持空間取出數據覆蓋至模式空間;

G:從保持空間取出內容追加至模式空間;

x: 把模式空間中的內容與保持空間中的內容進行互換;

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

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

d: 刪除模式空間中的行;

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

sed -n ‘n;p’ FILE:顯示偶數行

sed ‘1!G;h;$!d’ FILE:逆向顯示文件內容

sed ‘$!N;$!D’ FILE: 取出文件后兩行;

sed ‘$!d’ FILE:取出文件最后一行;

sed ‘G’ FILE:

sed ‘/^$/d;G’ FILE:

sed ‘n;d’ FILE: 顯示奇數行;

sed -n ‘1!G;h;$p’ FILE: 逆向顯示文件中的每一行;

例一:逆向顯示文件中的每一行

[root@localhost ~]# sed '1!G;h;$p' test.txt

 

原創文章,作者:kang,如若轉載,請注明出處:http://www.www58058.com/77646

(0)
kangkang
上一篇 2015-07-06 09:33
下一篇 2015-07-08 09:31

相關推薦

  • 正則表達式、擴展正則表達式

    正則表達式:支持:grep,sed,awk,vim, less,nginx,varnish等

    2018-03-16
  • N25期—第四周作業

    1、 復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 cp –rf /etc/skel /home/tuser1 chmod -R go= /home/tuser1 2、 編輯/etc/group文件,添加組hado…

    Linux干貨 2016-12-26
  • date 命令練習

    一、課外資料補充: 1.命令格式: date[參數]…[+格式] 2.命令功能: date可以用來顯示或設定系統的日期與時間。 3.命令參數: 必要參數: %H小時(以00-23來表示)。 %I小時(以01-12來表示)。 %K小時(以0-23來表示)。 %l小時(以0-12來表示)。 %M分鐘(以00-59來表示)。 %P AM或PM…

    Linux干貨 2016-08-05
  • mysql.主從復制.讀寫分離.高可用.集群實戰

    架構圖如下: 1.按照架構圖所示,準備機器,做好時間同步,主機名解析 192.168.42.150 node1 [proxySQL keepalived]192.168.42.151 node2 [proxySQL keepalived]192.168.42.152 node3 [mysql-master wha]192.168.42.153 node4 […

    Linux干貨 2017-07-14
  • Linux程序包管理

      Linux的各個release版本開發商,在發布各種應用程序,以及一些團體發布應用程序時,通常會根據發布的程序所適應的開發語言,使用環境,預設參數等,事先編譯完成一個可以在相應平臺上安裝的程序包供使用者直接使用,該程序包含有安裝前(preinstall)操作系統環境檢測的腳本,程序包中所有文件的相關信息,程序預定義的配置參數文件,程序…

    Linux干貨 2016-11-30
  • 高效運維最佳實踐(03):Redis集群技術及Codis實踐

    前言 誠如開篇文章所言,高效運維包括管理的專業化和技術的專業化。前兩篇我們主要在說些管理相關的內容,本篇說一下技術專業化。希望讀者朋友們能適應這個轉換,謝謝。 互聯網早在幾年前就已進入Web 2.0時代,對后臺支撐能力的要求,提高了幾十倍甚至幾百倍。在這個演化過程中,緩存系統扮演了舉足輕重的角色。 運維進化到今天,已經不是重復造輪子的時代。所以,我們在架構優…

    Linux干貨 2015-04-03
欧美性久久久久