文本處理sed

文本處理sed

Sed介紹:

         處理文本的工具sed ,Stream EDitor, 行編輯器

sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個文件,簡化對文件的反復操作,編寫轉換程序等

linux中文件的行結尾用二進制為0a表示結尾

windows中文件的行結尾用二進制為0d
0a
表示結尾

Sed簡單用法

         用法:

sed[option]… ‘script’ inputfile…

常用選項:

-n:不輸出模式空間內容到屏幕,即不自動打印

-e: 多點編輯

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

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

-i.bak(文件后綴): 備份文件并原處編輯(用于修改文件很危險的操作建議使用時備份)

 

script: 
地址命令(表示要對那些文件操作的條件,對那些行的操作)

地址定界:

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

(2) 單地址:

#: 指定的行

/pattern(正則表達式)/:被此處模式所能夠匹配到的每一行

(3) 地址范圍:

#,#

#,+#(表示為#行以后的+#行)

/pat1/,/pat2/  顯示pat1 pat2之間的行都會顯示

#,/pat1/     (從#pat1  最先發現pat1停止)

(4) ~:步進

1~2 奇數行(以1開始每次增加2為步進)

2~2 偶數行(以2開始每次增加2為步進數)

取出文件的偶數行:

              Cat –n  /etc/passwd |Sed –n ‘2~2p’

d: 刪除模式空間匹配的行

             

p: 顯示模式空間中的內容(將一個行再打印一遍)           

a [\]text:在指定行后面追加文本,支持使用\n實現多行追加

i[\]text:在行前面插入文本

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

     將一行分為兩行表示

w /path/somefile: 保存模式匹配的行至指定文件(保存到別的文件里)

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

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

             

!:模式空間中匹配行取反處理

             

s///:查找替換,支持使用其它分隔符,s@@@s###

       

替換標記:

g: 行內全局替換

p: 顯示替換成功的行(與-n組合使用)

w /PATH/TO/SOMEFILE:將替換成功的行保存至文件中

 

                            例:修改系統當前版本號(sed  -i.bak  ‘s/6.8/8.8/’  
/etc/centos-release

         sed示例:

sed  ‘2p’  /etc/passwd  將第二行在打印一次

sed  –n  ‘2p’
 /etc/passwd   
只打印顯示第二行

sed  –n  ‘1,4p’  /etc/passwd   只打印14行的內容

sed  –n  ‘/root/p’
 /etc/passwd    
只打印 包含/root/的行

sed  –n  ‘2,
/root/p’  /etc/passwd   
2行開始到包含/root/的行進行打印

sed  -n   ‘/^$/=’ file  顯示空白行的行號

sed  –n  –e  ‘/^$/p’  –e  ‘/^$/=’
 file     

sed  ‘/root/a\superman’  /etc/passwd行后    /root/de后插入superman  

sed  ‘/root/i\superman’  /etc/passwd行前     /root/前面插入superman

sed  ‘/root/c\superman’  /etc/passwd代替行   superman替代/root/的行

                            sed  ‘/^$/d’  file        刪除空白行

sed  ‘1,10d’  file        刪除110

nl   /etc/passwd| sed  ‘2,5d’      刪除25

nl   /etc/passwd| sed  ‘2a tea’     a的后面插入sed

sed  ‘s/test/mytest/g’  example     test全局替換為mytest

sed  –n 
‘s/root/&superman/p’  /etc/passwd
單詞后& 代表前面搜索到的內容)      

sed  –n 
‘s/root/superman&/p’ 
/etc/passwd
單詞前

sed  -e   ‘s/dog/cat/’
-e ‘s/hi/lo/’  pets   
(多點操作 -e  在將dog替換為cat的同時  也將hi替換為lo

sed  –i.bak  ‘s/dog/cat/g’  pets    修改文件將dog全局替換為cat,并且備份文件為.bak后綴的文件

 

列:將ifconfig eth0IP地址取出來

ifconfig eth0|sed -n 2p|sed -e ‘s/.*r://’
-e ‘s/ B.*//’

ifconfig eth0|sed -e ‘s/.*inet addr://’ -e ‘s/ B.*//’  -n -e 2p

 

取基名(利用正則表達式的分組)

echo 
/etc/sysconfig/network-scripts/ |sed -r 
‘s@(^/.*/)([^/]+/?)@\2@’

取目錄名

echo 
/etc/sysconfig/network-scripts/ |sed -r 
‘s@(^/.*/)([^/]+/?)@\1@’

 

         替換文件內的非#開頭的以#開頭

                            sed  -r 
‘s/(^[^#])/#\1/’ /etc/fstab

sed  -r  ‘s/^[^#]/#&/’ /etc/fstab

 

Sed高級用法:(在sed的模式空間上增加一個保持空間)

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

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

 

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

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

 

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

 

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

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

 

d: 刪除模式空間中的行

D:刪除當前模式空間開端至\n的內容(不再傳至標準輸出),放棄之后的令,但是對剩余模式空間重新執行sed

         sed示例:

sed  -n  ‘n;p’
 FILE 
(與-n組合使用隔行打?。?span>

獲取ipifconfig eth0 |sed ‘2!d;s/.*r://;s/ 
B.*//’
 

sed  ‘1!G;h;$!d’  FILE   (倒序打印)

sed  ‘$!N;$!D’  FILE   (只保留最后兩行)

    

sed  ‘$!d’  FILE    (顯示最后一行)

sed  ‘G’  FILE      (格一行顯示)

sed  ‘g’  FILE   (顯示下一行)

sed  ‘/^$/d;G’  FILE 

 

sed  ‘n;d’   FILE  隔行顯示

sed  -n  ‘1!G;h;$p’  FILE

 

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

(0)
GYFGYF
上一篇 2017-05-03
下一篇 2017-05-04

相關推薦

  • linux入門

    基本知識和操作用法。

    Linux干貨 2017-11-30
  • linux基礎入門之一

    一、計算機的組成與功能 計算機由硬件和軟件組成 硬件: 按馮·洛伊曼體系劃分 1、CPU:包括運算器、控制器、寄存器、緩存,對數據控制和計算 2、存儲器:內部存儲器、外部存儲器,對數據提供存儲功能 3、輸入設備:具有下指令,提供數據輸入 4、輸出設備:輸出數據加工的結果 軟件: 1、低級語言:匯編語…

    Linux干貨 2016-09-19
  • 磁盤管理

    設備文件 I/O Ports: I/O 設備地址 一切皆文件: open(), read(), write(), close() 設備類型: 塊設備:block ,存取單位“塊”,磁盤 [root@localhost ~]# ll /dev/ brw-rw—-. 1 root disk 253, 0 Apr 29 03:53 dm-0 塊設備 brw-r…

    2017-04-28
  • nginx配置(一)

    Nginx:http協議:web服務器(類似于httpd)、http reverse proxy(類似于httpd)、imap/pop3 reverse proxy NGINX is a free, open-source, high-performance HTTP server and reverse proxy, as well as an IMAP/…

    Linux干貨 2017-05-05
  • 私人定制-linux系統和grub啟動流程中問題及解決方案

    系統的啟動流程;     POST加電自檢–>Boot Sequence(BIOS)–>Boot Loader(MBR)–>kernel(Ramdisk)–>rootfs–>switchroot–>/sbin/i…

    Linux干貨 2016-09-13
欧美性久久久久