Linux sed 文字操作

2022-07-20 02:00:15 字數 1961 閱讀 7804

sed 是一項linux指令,功能同awk類似,差別在於,sed簡單,對列處理的功能要差一些,awk的功能複雜,對列處理的功能比較強大.

sed全稱是:stream editor

呼叫sed命令有兩種形式:

sed [options]

'command

'file(s)

sed [options] -f scriptfile file(s)

sed 常用引數

-n      # 輸出由編輯指令控制(取消預設的輸出,必須與編輯指令一起配合)

-i # 直接對檔案操作

-e # 多重編輯

-r # 正則可不轉移特殊字元

b # 跳過匹配的行

p # 列印

d # 刪除

s # 替換

g # 配合s全部替換

i # 行前插入

a # 行後插入

r # 讀

y # 轉換

q # 退出

&# 代表查詢的串內容

*# 任意多個 前驅字元(前導符)

? # 0或1個 最小匹配 沒加-r引數需轉義 \?$ # 最後一行

.*# 匹配任意多個字元

\(a\) # 儲存a作為標籤1(\

1)

sed 模式空間

# 模式空間(兩行兩行處理) 模式匹配的範圍,一般而言,模式空間是輸入文字中某一行,但是可以通過使用n函式把多於一行讀入模式空間

# 暫存空間裡預設儲存乙個空行

h # 把模式空間裡的行拷貝到暫存空間

h # 把模式空間裡的行追加到暫存空間

g # 用暫存空間的內容替換模式空間的行

g # 把暫存空間的內容追加到模式空間的行後

x # 將暫存空間的內容於模式空間裡的當前行互換

! # 對其前面的要匹配的範圍取反

d # 刪除當前模式空間中直到幷包含第乙個換行符的所有字元(/.*/匹配模式空間中所有內容,匹配到就執行d,沒匹配到就結束d)

n # 追加下乙個輸入行到模式空間後面並在第二者間嵌入乙個換行符,改變當前行號碼,模式匹配可以延伸跨域這個內嵌換行

p # 列印模式空間中的直到幷包含第乙個換行的所有字元

sed 的標籤函式

: lable   # 建立命令標記,配合b,t函式使用跳轉

b lable   # 分支到指令碼中帶有標記的地方,如果分支不存在則分支到指令碼的末尾。

t labe   # 判斷分支,從最後一行開始,條件一旦滿足或者t,t命令,將導致分支到帶有標號的命令出,或者到指令碼末尾。與b函式不同在於t在執行跳轉前會先檢查其前乙個替換命令是否成功,如成功,則執行跳轉。

sed -e '

/b;b p1;}

'# 檔案內容第一行a第二行b:建立標籤p1;兩個替換函式(a替換成aa,b替換成bb)當a或者b達到10個以後呼叫b,返回

echo

'sd f f [a b c cddd eee]

' | sed '

:n;s#\(\[[^ ]*\) *#\1#;tn

'# 標籤函式t使用方法,替換裡的空格

echo

"198723124.03

"|sed -r '

:a;s/([0-9]+)([0-9])/\1,\2/;ta

' # 每三個字元加乙個逗號

sed 引用外部變數方式

sed -n ''$a'

,10p

'sed -n ""$a"

,10p

"

Linux sed 命令高效文字操作

linux 下的 sed 命令功能十分強大,能夠完美地配合正規表示式使用,靈活巧妙地利用sed命令,可以極大地提高工作效率。sed 的用法非常多,不可能一一枚舉,本文僅針對個人實踐過程中比較常見的幾個功能作簡要介紹。1.替換操作sed i s pen pencil filesed i s pen p...

linux sed指令的替換操作

替換文字中的字串 sed s book books file注意最後乙個 不可少 n選項和p命令一起使用表示只列印那些發生替換的行 sed n s test test p file 全面替換標記g 使用字尾 g 標記會替換每一行中的所有匹配 sed s book books g file echo ...

LINUX sed多行文字處理

問題 本案例要求使用sed工具來完成下列任務操作 修改主機名配置檔案 修改hosts檔案,新增兩條對映記錄 192.168.4.5 與 svr5.tarena.com svr5,還有119.75.217.56與www.baidu.com 方案sed工具的多行文字處理操作 i 在指定的行之前插入文字 ...