sed命令的使用和说明
sed的三種用法
1.shell命令行輸入命令
?格式:sed [選項] ’sed命令‘ 輸入文件
2.將sed命令出入腳本文件后,sed命令調用
格式: sed [選項] -f sed腳本文件 輸入文件
3.將sed命令插入腳本文件后,三種腳本文件可執行,直接執行腳本文件
格式:./sed腳本文件 輸入文件
sed選項
? -n? 不顯示所有行到屏幕(標準輸出)
? -e? 表示將下一個字符串解析為sed編輯命令,如果只傳遞一個編輯????? 命令給sed,-e選項可以省略
? -f? 表示正在調用sed腳本文件
sed的兩種定位文本方式
1.使用行號,指定一行,或指定行號范圍
2.使用正則表達式
定位文本
x?? x為指定行號
x,y 指定從x到y的行號范圍
/pattern/?? 出現包含模式的行
/pattern/pattern/? 查詢包含兩個模式的行
/pattern/,x????? 從x號到與pattern的匹配行之間的行
x,y!?????? 查詢不包括x和y行號的行
sed編輯命令
? p?? 打印匹配行
? =?? 打印文件行號
? a\? 在定位行號之后追加文本信息
? i\? 在定位行號之前插入文本信息
? d?? 刪除定位行
? c\? 用新文本替換相應模式
? r?? 從另一個文件中讀文件
? w?? 將文本保存到一個文件
? y?? 變換字符
? q?? 第一個模式匹配完成后退出
? l?? 顯示與八進制ASCII碼等價的控制字符
? {}? 在定位行執行的命令組
? n?? 地區下一個輸入行,用下一個命令處理新的行
? h?? 將模式緩沖區的內容復制到保持緩沖區
? H?? 將模式緩沖區的文本追加到保持緩沖區
? x?? 互換模式緩沖區和保持緩沖區的內容
? g?? 將保持緩沖區的內容復制到模式緩沖區
? G?? 將保持緩沖區的內容追加到模式緩沖區
*** 一、文本選項
1.sed命令的-n選項?? --不顯示所有行到屏幕(標準輸出)
例子
? sed -n '1p' input? 只顯示文本第一行
? sed '1p' input???? 不止打印第一行,還打印文本的全部內容
?
? sed命令打印范圍行
例子
? sed -n ’3,6p' input? 打印文本的3到6行
? 打印匹配模式 -n ‘/ca/p' input? 打印文本中含有ca的行
2.sed命令的-e選項??? --使用多個編輯命令
例子
??? sed -n '/ca/=' input????? 打印含有ca的行號
例子
??? sed -n -e '/ca/p' -e '/ca/=' input 打印行有ca的行及行號
?注意:不支持同時帶多個編輯命令的用法
?? 如 sed -n '/ca/p=' input
3.sed命令的-f選項
? sed ’指定地址a\text' 輸入文件
例子:
??? sed '/file:/a\i love you.' input
????? 在文本input中含有file:的行后面另起一行添加i love you(作為一行)
腳本執行追加?? --在匹配行的后面插入一行內容
?? touch zhuijia.sed
?? #!/bin/sed -f?? #調用sed腳本
??? /file:/a\????? # a\表示此處換行添加文本
?#所添加的文本內容
?? l like you.\??? #"\"符號表示換行
?? l love you.
?執行腳本
?? 給執行權限
? ./zhuijia.sed input
+++++++++++++++++++++++++++++++++++++++++++++++
***二、文本定位
1.匹配元字符
? 例子
?? sed -n '/\./p' input? 匹配文本中含有”.“的行
2.使用元字符進行匹配
? 例子
?? sed -n '$p' input? 匹配文本最后一行
?? sed -n '/.*bus/p' input? 匹配包含bus結尾的任意字符串
3.!符號
? 例子
? sed -n '2,10!p' input? 匹配不再2到十行的所有行
?
4.使用行號與關鍵字匹配限定行范圍
?例子
?sed -n '/ca/,$p' input 打印與ca的匹配行到最后一行
?sed -n '3,/ca/p' input 打印第三行到ca的匹配行
+++++++++++++++++++++++++++++++++++++++++++
***三、sed編輯命令
?1.插入文本??? --在匹配行的前面插入一行內容
?? 格式:sed '指定地址i\text' 輸入文件
? 例子
? sed腳本
? #!/bin/sed -f
?? /file:/i\???? #i\表示此處換行插入文本
??? we insert a new line.? #插入的文本內容
作用:在file:所在的行的上一行插入 we insert a new line.這一????? 行內容
?2.修改文本?? --匹配的文本行用新文本替代
?? 格式:‘指定地址c\text' 輸入文件
?? 例子
?? #!/bin/sed -f
???? /file:/c\?????? #c\表示此處換行修改文本
??? We modify this line??? #修改的文本內容
作用:?? 將file:所在的文本行替換成? We modify this line文本???????? 行
?3.刪除文本?? --刪除指定行或指定行范圍
?? 格式:刪除地址d
?? 例子
?? sed '1d' input? 刪除文本的第一行
?? sed '$d' input? 刪除文本的最后一行
?? sed '1,10d' input? 刪除文本的1到10行
?? sed '/[Cc][Ee]/d'? 刪除含有不區分大小寫的關鍵字ce的所有行
??
?4.替換文本
?? 格式:s/被替換的字符串/新字符串/[替換選項]
??? 替換選項
??? g? 表示替換文本中所有出現被替換字符串之處
??? p?? 與-n選項結合,至打印替換行
??? w文件名? 表示將輸出定向到一個文件
? 1>p選項
?? 命令格式:sed -n 's/被替換的字符串/新字符串/Np' 輸入文件
??? 沒有-n? 顯示替換了字符串后的文本
??? 沒有p?? 不顯示任何內容
??? 都有???? 只顯示替換了字符串的行
???? Np???? 替換每行的第N次匹配
?? 例子???
?? sed 's/ca/ce/p'??? input?? 將文本中含有ca的行中的第一個ca????????????????????????????? 替換成ce,并將替換后的文本顯示
?? sed -n 's/ca/ce/' input??? 將文本中含有ca 的行中的第一個????????????????????????????? ca 替換成ce,不顯示文本
?? sed -n 's/ca/ce/p' input?? 將文本中含有ca的行中第一個ca替????????????????????????????? 換成ce,只顯示替換的行
?? sed -n 's/ca/ce/2p input?? 將文本中國含有ca的行中的第二個????????????????????????????? ca替換成ce,只顯示替換的行
? 2>g選項
?? 命令格式:sed -n 's/被替換的字符串/新字符串/g' 輸入文件
???? 沒有g?? 只替換每行第一個可以替換的字符串
????? 有g???? 替換每行所有可以替換的字符串
??? 例子
??? sed -n 's/ca/ce/g' 將文本中含 有ca的行的所有ca替換成ce,?????????????????????? 只顯示替換的行
?? 3>w選項
???? 命令格式:se -n '被替換的字符串/新字符串/w output' input
?
?? 例子
?? sed -n 's/ca/ce/w output' input? 將文本中的ca替換成ce,并將結果寫???????????????????????????????????? 入output文件
? 4>文本替換結合&??? --將被替換的字符串保存到&中
?? 例子
??? sed? -n '/ca/(&)/p' input? ==sed -n '/ca/(ca)/p'
? 5.寫入一個新文件
??? 命令格式:指定地址 w 文件名
??? 例子
??? sed -n '1,5 w output' input 將文本input中的1到5行寫入到output中
??? sed -n '/ca/w output' input 將文本input中匹配ca的行寫入到output中
???
? 6.從文件中讀入文本? ---將其他文件中的文本讀入并附加到指定地址之后
??? 格式:指定地址 r 文件名
??? 例子
???? sed '/ca/r otherfile' input? 將otherfile文件中的所有文本插入到??????????????????????????????????? input文本中匹配ca的文本行后面
7.退出命令
?? 格式:指定地址 q
?? 例子
??? sed '5 q' input 打印文本前5行,然后退出
???
??? sed -n '/.r.*/p' input 查找”所有的“任意字符后跟r字符再跟0個或多??????????????????????????? 個任意字符
???? sed -n '/.r.*/q'????? 查找”第一個“任意字符后跟r字符再跟0個或多?????????????????????????? 個任意字符,然后退出查找
8.變換命令
? 格式:sed 'y/被變換的字符序列/變換的字符序列/' 輸入文件
?? 例子:
?? sed ‘y/12345/abcde/' input 將文本中的12345一一對應的替換為abcde
?? 注意:被變換字符序列和變換字符序列必須等長
9.顯示控制字符
?? 例子
??? sed -n '1,$1' input? 顯示文本中的所有控制字符(如:shift,退格鍵等)
10.在等位行執行命令組
? 例子
等價命令? sed -n -e '/ca/p' -e '/ca/=' input
???????? sed -n '/ca/{p;=}' input
????? sed '/ca/{s/i/I/g;s/le/99/;}' input 匹配ca的文本行中將所有i替????????????????????????????????????? 換為I,匹配行的第一個le替換為99
+++++++++++++++++++++++++++++++++++++++++++++++++++
***四、高級編輯
?1.處理匹配行的下一行
?? 例子
?? sed '/ca/{n;s/11/99;}' input? 將文本中ca的匹配行的下一行中的ll替換?????????????????????????????????? 為99
?2.sed緩沖區的處理??????????????????????????
?? sed的兩種緩沖區
??????? 模式緩沖區
??????? 保持緩沖區
?? 例子
?? sed -e '/ca/h' -e 'ce/x' -e '$G' input
3.利用分號分隔多個編輯命令
? 格式:sed '編輯命令1;編輯命令2;......'輸入文件
? 例子
?? sed 's/ca/ce; s/csa/ce' input 將文本中ca替換為ce,csa替換為ce
?? bourne shell命令行中
?? sed '
?? >s/ca/ce
?? >s/csa/ce
?? ....
?? >$d' input
轉載于:https://blog.51cto.com/moonend/1616625
總結
以上是生活随笔為你收集整理的sed命令的使用和说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 毕业设计 - 题目: 基于协同过滤的电影
- 下一篇: xvhfeng的工作回忆总结(第二年)阅