sed

文本處理工具sed

sed? Stream EDitor 行編輯器

sed 是一種流編輯器,它一次處理一行內容,處理時把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space)接著用sed 命令處理緩沖區的內容,處理完成后把緩沖區的內容送往屏幕,然后讀入下一行,執行下一個循環,但不會清空保留空間,這樣不斷重復,知道文件末尾,文件內容并沒有改變,除非你使用重定向存儲輸出

功能:主要用來自動編輯一個或多個文件,簡化對文件復雜的操作,編寫轉換程序等

sed工具的用法 sed 【option】 ….? ‘script’? inputfile ………

[option] 選項? -n : 不輸出模式空間內容到屏幕上,即不自動打印

-e : 多點編輯

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

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

-i.bak : 備份文件并原文編輯

‘script’? ? ? ?‘地址命令’

1 不給地址,對全文進行處理

2 單地址: # : 指定行數? ? ? ? $ :最后一行

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

3 地址范圍: # , #? ? ? ? ? ?# , +#? ? ? ? ? /pat1/ , /pat2/? ? ? ? ?# , /pat1/

4 ~? ? ? ? :? ?進步? ? 1~2? 奇數行? ?2~2? 偶數行

例如:

創建一個文件 f1 里面包含 1-10數字? 用命令sed來做實驗

sed? ‘4p’? f1

RD@RNT`%M1{V)(%6U~PUKGA

只打印第4行 用 -n

sed? -n? ‘4p’ f1

TJ6A`SU97%%J~SE]00~U(2N

打印偶數行? 用 ‘2~2p’? 打印偶數? ? 用’1~2p’打印奇數

sed -n? ‘2~2p’? f1

4VNN%{P[Q}MOVMQ}7([@@SU

-e 多點打印

p: 打印模式空間內容,追加到默認輸出之后

sed? ?-ne ‘2p’ -e ‘4p’ f1

BP9H8VMF4J{)QUT`L4{$]VE

-i.bak 備份 并對原文件編輯? ? sed? -i.bak ‘/aliaseas/aalias p=poweroff’? .bashrc

8@4(I]53A@B_Q6NV6M@(N~X

8@4(I]53A@B_Q6NV6M@(N~X

-f 從文件中讀取編輯腳本

sed -nf? sedscript.txt f1

2Y0E_QNW0_XIXC8}SKMMOR6

sed 工具的編輯命令

d : 刪除模式空間的匹配行,并立即啟用下一輪循環

5S%C_4SU}6X5JG2FIS)H9R4

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

R5(UBSV3G[56ITTU{8OI

=: 為模式空間中的行打印行號? 顯示在/etc/passwd 文件中含有root 的行號

FSBD[%)T{TKXO9PB7UU$1TC

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

N9TK_PUYAY@NSI}U{4QVVWL

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

UHIWT$VLEMJ5FXT~PSH]XTK

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

0]}]IQ3JWPL@)CUB_5}39Y5

w 文件: 保存模式匹配的行至指定文件

IRZ$_[1V%V%X$(~[_7}4

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

]L_Y7HE6IS)OTI24B8_1M`F

 

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

在/etc/default/grub? ? 給GRUB_CMDLINE_LINUX=”crashkernel=auto rhgb quiet” 后面加個字符串xyz

X]JYY)DJCBCYJ`IPP]Y`8V9

 

高級編輯命令

P : 打印模式空間開端至 \n 內容,并追加到默認輸出之前

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

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

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

G :從保持空間取出數據追加至模式空間

x :? 把模式空間內容與保持空間內容互換

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

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

d :刪除模式空間中的行

D :如果模式空間包含換行符,則刪除直至第一個換行符的模式空間中,并不會讀取新的輸入行,而使用? ? ? ? ? ? 合成的模式空間重新啟動循環,如果模式空間不包含換行符,則會像發出 d 命令那樣啟動正常的循環

GSV_ZDCU0ARYST_7$NBFCB9

只保留奇數行

@~%8GP}20JRK$H``4U6R0)S

倒序顯示

{OL5{Z06XDGRMK1HJ27]CUY

7787`S_{Q}U5JEQF%1LCYIR

只留最后一行

FJ}`$9B6WW5}((PSI}DQ_Z5

只保留最后2行

R6$$6JZJI7R}@$F3@E8JBB3

將文本文件的n和n+1行合并為一行,n為奇數行

}OX13N$UG1091E6]4[M8`B5

 

 

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/97375

(0)
祝韻杰-桃子祝韻杰-桃子
上一篇 2018-05-02
下一篇 2018-05-03

相關推薦

  • 追夢之路第七周修煉

    追夢之路第七周操作系統啟動流程

    2018-08-06
  • CentOS系統啟動/boot/vmlinuz修復(實驗)

    內核啟動之文件丟失修復

    2018-05-09
  • 對正則表達式,VIM的基本命令的操作,SHELL編程的基本格式等的一些見解。

    第一 正則表達式,第二 VIM的具體適應,第三 shell編程的基本格式跟規范!

    Linux筆記 2018-04-08
  • Linux用戶和組管理

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 2、取出最后登錄到當前系統的用戶的相關信息。 3、取出當前系統上被用戶當作其默認shell的最多的那個shell。 4、將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxusers.txt文件中。 5、取出當前主機的…

    Linux筆記 2018-07-13
  • 正則表達式及vim使用方法

    正則表達式(正則表達式匹配的是文本內容中的字符串,通倍符匹配的是文件名)REGEXP:由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字面意義,而表示控制或通配的功能程序支持:grep,sed,awk,vim, less,nginx,varnish等分兩類:不同的命令支持不同的正則表達式基本正則表達式:BRE擴展正則表達式:EREgre…

    Linux筆記 2018-04-08
  • 構建WordPress

    所需要安裝包: centos7,httpd,php,php-mysql,mariadb-server centos6,httpd,php(http的php模塊包),php-mysql,mysql-server 包解釋: php-common:php解釋器安裝包; php:httpd的模塊安裝包; php-mysql:php模塊連接數據庫的功能擴展包; php…

    Linux筆記 2018-03-31
欧美性久久久久