shell 三劍客(sed)用法

2021-10-05 10:57:57 字數 2762 閱讀 8732

shell 三劍客 sed用法

string+edit=流編輯器

sed 兩個空間:模式空間,保持空間

模式空間:sed處理文字內容行的乙個臨時緩衝區,模式空間中的內容會主動列印到標準輸出,並自動清空模式空間

保持空間:sed處理文字內容行的另乙個臨時緩衝區,不同的是保持空間內容不會主動清空,也不會主動列印到標準輸出,而是需要sed命令來進行處理

小寫的都是表示:覆蓋

大寫的都是表示:追加

n|n(next)

n : 讀取下一行覆蓋模式空間中的行

n:讀取下一行並追加到模式空間中的行後面

x:exchange 空間交換

把模式空間中的內容he保持空間中的內容互換,初始保持空間中為空

h|h(hold)

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

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

g|g(get)

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

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

用法: sed [選項]..

.[輸入檔案]..

.-i:會修改原始檔!

-n:取消自動列印模式空間的內容

s:表示替換

p:print 表示列印

d:delete 表示刪除

i:insert 表示插入

c:整行替換

w:write 將匹配行寫入指定檔案內

r:read 讀取指定檔案.檔案合併

=:用來顯示行號的

!:表示取反的意思

#將所有的root替換為huazai007

sed -i 's/root/huazai007/g'

/etc/passwd

#指定從第二個huazai007 開始替換為root

sed -i "s/huazai007/root/2g"

/tmp/passwd

#將mail替換為ligenjian(只列印,不修改原始檔!)

sed 's/mail/ligenjian/'

/etc/passwd|grep ligenjian

#將以ftp開頭的替換為ftp_wg(不修改原始檔)

&:表示被匹配的字元(ftp)

sed "s/^ftp/ftp_wg/g"

/tmp/passwd | grep ftp_wg

sed "s/^ftp/&_wg/g"

/tmp/passwd | grep ftp_wg

#列印第10行

sed -n '10p'

/etc/passwd

#列印 第5行到第10行的內容

sed -n '5,10p'

/etc/passwd

#從第5行開始,往下列印3行

sed -n '5,+3p' num

#列印奇數行

sed -n '1~2p' num

#列印偶數行

sed -n '2~2p' num

#刪除第二行

sed '2d' num

#刪除 1-3行

sed '1,3d' num

#刪除空行(^開頭 $結尾)

sed '/^$/d' num

#刪除以huazai007開頭的行

sed '/^huazai007/d'

/tmp/passwd |grep huazai

#刪除以bash 結尾的行

sed '/bash$/d'

/etc/passwd|grep bash

#在以ftp開頭的行後面追加一行字元「wg001」

sed '/^ftp/a"wg001"'

/etc/passwd

#在以nologin 結尾的行後面追加一行字元「bw007」

sed '/nologin$/a"bw007"'

/etc/passwd

#在第三行給我追加乙個字元「wg002」

sed '3a"wg002"'

/etc/passwd

#在第三行的前面插入一行字元「wg003」

sed '3i"wg003"'

/etc/passwd

#在以mail開頭的行前面插入一行字元「wg004」

sed '/^mail/i"wg004"'

/etc/passwd

#將包含mail的行整行替換為「wg005」

sed '/mail/c"wg005"'

/etc/passwd

#將以nologin結尾的整行替換為 wg006

sed '/nologin$/c"wg005"'

/etc/passwd

#將以nologin結尾的行 寫入到指定檔案:result.txt裡

sed '/nologin$/w /tmp/result.txt'

/etc/passwd

#將1-10行寫入到/tmp/result.txt裡

sed '1,10w /tmp/result.txt'

/etc/passwd

#讀取 /tmp/result.txt 並將內容寫入到 以mysql開頭nologin結尾的行後面

sed '/^mail.*nologin$/r /tmp/result.txt'

/etc/passwd

#顯示最後一行的行號

sed '$='

/etc/passwd

#除了#號開頭的行都列印出來

sed -n '/^#/!p'

/tmp/result.txt

shell三劍客之sed

sed命令是文字處理工具,讀取文字內容,根據指定的條件進行處理,對檔案內容進行增刪改查,常與正規表示式進行相互配合使用。他是一種流編輯器,一次處理一行內容。處理時,把當前處理的行儲存在臨時緩衝區中,稱為 模式空間 pattern space 接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的...

shell三劍客之sed

sed options pattern filename引數說明 e 多點編輯 f 從指定檔案中讀取編輯 i.bak 備份,並對內容進行修改 n 取消自動列印 r 支援使用擴充套件正規表示式 v 顯示版本資訊 h 顯示幫助 動作說明 動作前面通常加一些匹配項 a 新增,a 後面可以接字串,而這些字串...

shell 三劍客(grep)用法

grep 的全程為global search regular expression and print out the line 類似windows 平台的ctrl f 過濾出 etc passwd 包含root的行 cat etc passwd grep root 不區分大小寫搜尋root行 i ...