日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

sed文本处理常见用法

發(fā)布時(shí)間:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sed文本处理常见用法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

sed文本處理常見(jiàn)用法?
?
2011-06-24? TsengYia#126.com http://tsengyia.blog.chinaunix.net/
?
#################################################################?
?
系統(tǒng)環(huán)境:?
??? RHEL 6.0 [2.6.32-71.el6.i686]?

軟件環(huán)境:?
??? sed-4.2.1-5.el6.i686?
?
#################################################################?
?
一、基本格式

sed -e '編輯指令' 文件1,文件2,文件3,……?????????? #//過(guò)濾并輸出內(nèi)容
sed -n -e '編輯指令' 文件1 文件2 文件3,……??????? #//只輸出需要處理的行
sed -i -e '編輯指令' 文件1 文件2 文件3,……??????? #//直接修改文件內(nèi)容,而不是輸出過(guò)濾結(jié)果

??? —— 只有一個(gè)編輯指令時(shí),-e選項(xiàng)一般可以省略。
??? 編輯指令的格式:
??????? [地址1[,地址2]]操作函數(shù)[參數(shù)]

??? —— 使用多個(gè)編輯指令時(shí),可設(shè)置多個(gè)-e選項(xiàng)。
??? sed -e '編輯指令1' -e '編輯指令2' 文件
??? 相當(dāng)于
??? sed -e '編輯指令1' 文件 ; sed -e '編輯指令2' 文件


二、應(yīng)用舉例

1. 輸出符合條件的文本(p,正常輸出;l,以ASCII碼輸出非打印字符,其余與p相同)

sed -n 'p' afile????????????????????????? #//輸出所有行,等同于cat afile
sed -n '3p' afile???????????????????????? #//輸出第3行
sed -n '3l' afile???????????????????????? #//輸出第3行,其中非打印字符以ASCII碼表示
sed -n '3,5p' afile?????????????????????? #//輸出第3~5行
sed -n 'p;n' afile??????????????????????? #//輸出所有的奇數(shù)行,n表示讀入下一行文本
sed -n 'n;p' afile??????????????????????? #//輸出所有的偶數(shù)行,n表示讀入下一行文本
sed -n '1,5{p;n}' afile?????????????????? #//輸出第1~5行之間間的所有奇數(shù)行(第1、3、5行)
sed -n '10,${n;p}' afile????????????????? #//輸出第10行至文件尾之間的所有偶數(shù)行

sed -n '/xml/p' afile???????????????????? #//輸出包含xml的行,正則表達(dá)式以“/”包圍
sed -n '4,/xml/p' afile?????????????????? #//輸出從第4行至第一個(gè)包含xml的行
sed -n '/xml/=' afile???????????????????? #//輸出包含xml的行所在的行號(hào),=用來(lái)表示行號(hào)
sed -n '/^install/p' afile??????????????? #//輸出以install開(kāi)頭的行
sed -n '/noarch$/p' afile???????????????? #//輸出以noarch結(jié)尾的行
sed -n '$p' afile???????????????????????? #//輸出最后一行
sed -n '/\<system\>/p' afile????????????? #//輸出包含獨(dú)立單詞system的行,\< 與 \> 用來(lái)界定單詞
sed -n '/\bsystem\b/p' afile????????????? #//輸出包含獨(dú)立單詞system的行,\b 用來(lái)界定單詞

2. 刪除符合條件的文本(d,刪除內(nèi)容)

sed '3d' afile??????????????????????????? #//刪除第3行
sed '3,5d' afile????????????????????????? #//刪除第3~5行
sed '/xml/d' afile??????????????????????? #//刪除包含xml的行
sed '/xml/!d' afile?????????????????????? #//刪除不包含xml的行,!符號(hào)表示操作取反
sed '/^install/d' afile?????????????????? #//刪除以install開(kāi)頭的行
sed '/noarch$/d' afile??????????????????? #//刪除以noarch結(jié)尾的行、
sed '$d' afile??????????????????????????? #//刪除最后一行
sed '/^$/d' afile???????????????????????? #//刪除所有的空行
sed '/^$/{n;/^$/d}' afile???????????????? #//刪除重復(fù)的空行,連續(xù)多個(gè)空行只保留一個(gè),效果同cat -s afile
????????????????????????????????????????? —— n表示讀下一行文本,/^$/d表示如果仍然是空行則刪除

3. 替換符合條件的文本(s,字符串替換;c,整行或多行替換;y,單個(gè)字符轉(zhuǎn)換)

sed 's/xml/XML/' afile??????????????????? #//將每行中的第一個(gè)xml替換為XML,
????????????????????????????????????????? —— 替換操作中分隔符“/”也可改為其他字符,如#等
sed 's/xml/XML/3' afile?????????????????? #//將每行中的第3個(gè)xml替換為XML
sed 's/xml/XML/g' afile?????????????????? #//將文件中的所有xml都替換為XML
sed 's/xml//g' afile????????????????????? #//將文件中的所有xml都刪除(替換為空串)
sed 's/xml/&HTML/g' afile???????????????? #//將文件中的所有xml都替換為xmlHTML,&代表前面的查找串
sed 's/^/#/' afile??????????????????????? #//將每行開(kāi)頭插入一個(gè)#符號(hào)
sed 's/$/EOF/' afile????????????????????? #//將每行末尾添加EOF字符串
sed '/xml/s/^/#/' afile?????????????????? #//將包含xml的行的開(kāi)頭插入一個(gè)#符號(hào)
sed 's/\(AB\).*\(CDE\).*\(FG\)/\2\1\3/' afile??? #//將AB...CDE...FG替換為CDE...AB...FG
????????????????????????????????????????? —— 其中的\1、\2、\3分別代表查找串中以括號(hào)\(、\)包圍的第1、2、3個(gè)字符串
sed '3,5s/xml/XML/g' afile????????????? #//將第3~5行中的所有xml替換為XML
sed '/xml/s/com/COM/g' afile???????????? #//將包含xml的所有行中的com都替換為COM

sed '2cNewString' afile?????????????????? #//將第2行替換為Newtring
sed '2,5cLine1\nLine2' afile????????????? #//將第2~5行替換為兩行,即Line1和Line2,其中的\n表示換行
sed 'y/abcd/ABCD/' afile????????????????? #//將文件中的a、b、c、d字符轉(zhuǎn)換為大寫(xiě)
sed '1,5y/abcd/ABCD/' afile?????????????? #//將第1~5行中的a、b、c、d字符轉(zhuǎn)換為大寫(xiě)
sed '/xml/y/com/COM/' afile?????????????? #//將包含xml的行中的c、o、m字符都轉(zhuǎn)換為大寫(xiě)


4. 遷移符合條件的文本(H,追加復(fù)制到剪貼板;g、G,將剪貼板中的文本覆蓋/追加到指定行;w,保存為文件;r,讀取指定文件;a,追加指定內(nèi)容)

sed '/xml/{H;d};$G' afile???????????????? #//將包含xml的行遷移至文件末尾,;用來(lái)分隔多個(gè)操作
sed '/1,10{H;d};20G' afile??????????????? #//將第1~10行遷移至第20行后
sed '/xml/w out.file' afile?????????????? #//將包含xml的行另存為文件out.file
sed '/xml/r host.conf' afile????????????? #//將文件host.con的內(nèi)容添加到包含xml的每一行之后

sed '3aNewLine' afile???????????????????? #//在第3行之后插入一個(gè)新行,內(nèi)容為NewLine
sed '3aNewLine1\nNewLine2' afile????????? #//在第3行之后插入兩個(gè)新行,內(nèi)容分別為NewLine1、NewLine2
sed '/xml/aNewLine' afile???????????????? #//在包含xml的每一行之后插入一個(gè)新行,內(nèi)容為NewLine


三、使用sed腳本?
??? 將多個(gè)編輯指令存放到文件中(每行一條編輯指令),通過(guò)-f選項(xiàng)來(lái)調(diào)用。
??? 例如以下操作 —— :
sed '/1,10{H;d};20G' afile??????????????? #//將第1~10行遷移至第20行后

??? 可以改用sed腳本文件的方式 —— :
[root@localhost ~]# vi opt.list
1,10H
1,10d
20G
[root@localhost ~]# sed -f opt.list afile

轉(zhuǎn)載于:https://blog.51cto.com/yb19811103/1531049

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專(zhuān)家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的sed文本处理常见用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。