維啟網(wǎng)站建設(shè)商品推廣軟文800字
一、sed命令解析
1、sed工具概述
Stream EDitor,流式編輯器
- 非交互,基于模式匹配過(guò)濾及修改文本
- 逐行處理,并將結(jié)果輸出到屏幕
- 可實(shí)現(xiàn)對(duì)文本的輸出、刪除、替換、復(fù)制、剪切、導(dǎo)入、導(dǎo)出等操作
2、命令格式解析
主要用法:
- 格式1:前置命令 | sed [選項(xiàng)] ‘編輯指令’
- 格式2:sed [選項(xiàng)] ‘編輯指令’ 文件 … …
條件,可以是行號(hào)或 /正則/:
- 行號(hào)可以使用單個(gè)數(shù)字表示單行
- 或者3,5表示連續(xù)的多行
- 省略條件,則默認(rèn)逐行處理全部文本
- 匹配正則時(shí),需要使用//
常見(jiàn)命令選項(xiàng):
選項(xiàng) | 釋義 |
---|---|
-n | 屏蔽默認(rèn)輸出 |
-i | 直接修改源文件 |
-r | 支持?jǐn)U展正則 |
二、常見(jiàn)處理操作示例
1、輸出文本§
sed -n '/^123/p' file.txt #僅列出123開(kāi)頭的行
sed -n '4p' file.txt #輸出第4行
sed -n '2,4p' file.txt #輸出第2-4行
sed -n 'p' file.txt #輸出全部
sed -n '/ab/p' file.txt #輸出包含root的行
sed -n '$=' file.txt #輸出文件的行數(shù)
sed -n '1~2p' file.txt #打印奇數(shù)行
sed -n '2~2p' file.txt #打印偶數(shù)行
2、刪除文本(d)
sed '2,4d' file.txt #刪除第2-4行
sed '/ab/d' file.txt #刪除所有包含ab的行
sed '/ab/!d' file.txt #刪除不包含ab的行,!符號(hào)表示取反
sed '/^file/d' file.txt #刪除開(kāi)頭為file的行
sed '$d' file.txt #刪除文件的最后一行
sed '/^$/d' file.txt #刪除所有空行
注意:此案例只做輸出不修改原文件(修改原文件需要加-i選項(xiàng))
3、替換關(guān)鍵詞(s)
sed 's/ab/AB/' file.txt #將每行中第一個(gè)ab替換為AB
sed 's/123/456/2' file.txt #將每行中第二個(gè)123替換為456
sed 's/123/XXX/g' file.txt #將所有的123替換為XXX
sed 's/123//g' file.txt #將所有的123都刪除(替換成空字符串)
sed '6,8s/^/#/' file.txt #為6-8行加注釋
sed 's/^#\*/\*/' file.txt #去掉開(kāi)頭為#*的#號(hào)
注意:此案例只做輸出不修改原文件(修改原文件需要加-i選項(xiàng))
4、替換行(c)
sed 'c 123456' file.txt #將所有行內(nèi)容替換為123456
sed '/IPADDR/c IPADDR=10.0.0.0' file.txt #篩選IPADDR關(guān)鍵字的行,替換
sed '/#/c fileroot' file.txt #替換包含#號(hào)的行替換
sed '3c xxxxx' file.txt #替換第三行內(nèi)容
注意:此案例只做輸出不修改原文件(修改原文件需要加-i選項(xiàng))
三、sed文本塊處理
1、文本塊處理動(dòng)作
操作符 | 用途 | 指令示例 |
---|---|---|
i | 行前插入文本 | 2iYY 在第2行之前添加文本行“YY” 4,7iYY 在第4-7行的每一行前添加文本行 |
a | 行后插入文本 | 2aYY 在第2行之后添加文本 /^XX/aYY 在以XX開(kāi)頭的行之后添加文本 |
r | 導(dǎo)入指令 | 2cYY 將第2行的內(nèi)容修改為"YY" |
w | 文件另存為|導(dǎo)出文件內(nèi)容 |
2、行前插入(i)
sed '2i ######' test.txt #在第2行前插入單行文本
sed '/aaa/i abc' test.txt #在包含aaa的行前插入單行文本
sed '/aaa/i abc\n###' test.txt #在包含aaa的行前插入2行文本,多行需要加換行符\n
注意:此案例只做輸出不修改原文件(修改原文件需要加-i選項(xiàng))
3、行后追加(a)
sed '2a ######' test.txt #在第2行后追加單行文本
sed '/aaa/a abc' test.txt #在包含aaa的行后追加單行文本
sed '/aaa/a abc\n###' test.txt #在包含aaa的行后追加2行文本,多行需要加換行符\n
注意:此案例只做輸出不修改原文件(修改原文件需要加-i選項(xiàng))
4、導(dǎo)入(r)
sed '2r /root/file.txt' test.txt #在第二行之后導(dǎo)入file.txt文本到test.txt文件
sed 'r /root/file.txt' test.txt #在每一行后導(dǎo)入file.txt文本到test.txt文件
sed '/AAA/r /root/file.txt' test.txt #在包含AAA的行后導(dǎo)入file.txt文本到test.txt文件
注意:此案例只做輸出不修改原文件(修改原文件需要加-i選項(xiàng))
5、導(dǎo)出(w)
sed 'w copy_test.txt' test.txt #將test文件所有內(nèi)容另存為一個(gè)新文件
sed '/AAA/w AAA_test.txt' test.txt #將test文件中包含AAA的行另存為新的文件
sed '2,3w line.txt' test.txt #將test文件的2-3行另存為新的文件