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 在指定的行之前插入文字 ...