ubuntu下sed命令详解 - Dicky - 开源中国社区
ubuntu下sed命令詳解 - Dicky - 開源中國社區
??? ubuntu下sed命令詳解
??? 7人收藏此文章, 我要收藏 發表于2個月前(2012-11-05 02:01) , 已有57次閱讀 ,共0個評論
??? sed簡介
????????????????? sed是一種非交互式的流編輯器,可動態編輯文件。所謂非交互式是說,sed和傳統的文本編輯器不同,并非和使用者直接互動,sed處理的對象是文件的數據流(稱為stream/流)。sed的工作模式是,比對每一數據行,若符合樣式,就執行指定的操作。
????????????????? sed --version?????? //查看sed版本
???????? sed語法
????????????????? sed '操作命令'? 操作對象???
????????? 特別注意:sed并不會更改文件內容。sed的工作方式是讀取文件內容,經流編輯之后,把結果顯示到標準輸出。因此,如果想要存儲sed的處理結果,得自行運用轉向輸出將結果存成其他文件。
?????????? sed實例
????????????????? 用法1:刪除某一段范圍的數據行
????????????????? sed '1,4d'?? test.txt
????????????????? // 把第1到第4行數據刪除,剩下的顯示出來。d是sed的刪除命令
???????????????
???????????????? 用法2:把含有"La"的數據行刪除。
???????????????? sed '/La/d'? test.txt
???????????????? // 把含有La的行刪除,剩下的顯示出來。其中,/ / 代表搜索之意。
????????????
??????????????? 用法3:使用正則匹配
??????????????? sed '/[0-9]\{3\}/d' test.txt
??????????????? // 把含有"3位數"的行刪除,剩下的顯示出來,在樣式[0-9]\{3\}中,\{3\} 表/ /要尋找的是3個數字組成的字符串
??????????????? 用法4:刪除空行
??????????????? sed '/^$/d'? test.txt
??????????????? //刪除dataf5的空白行。^ 表開頭,$Snbsp;表尾部,這兩者之間沒有任何字符,代表該行是一空白行。
?????????????? 用法5:反向選擇
?????????????? sed '/La/!d'? test.txt
?????????????? //把不含有La的行刪除,剩下的顯示出來,這里的!是否定的意思,表示不符合樣式者
???????????? 用法6:把含有"樣式"的數據行顯示出來
???????????? sed '/La/p'?? test.txt
???????????? //用途 把含有La的行顯示出來。其中,p是sed的命令,它會把目前的數據顯示出來,但因為sed默認也會顯示不符合的數據行,所以,應改用以下指令:
???????????? sed -n '/La/p' test.txt
???????????? //選項-n會抑制sed顯示出其他資料行的默認操作,只顯示符合樣式的數據行。
???????????? 用法7:替換
???????????? sed -n 's/La/Oo/p'? test.txt
???????????? //這里的s是取代的意思,第一對//中含括的字符串(La)是搜索的目標,第二對//含括的是置換的字符串(Oo)。它會把數據行中的字符串La換成Oo。
???????????? 注意:上面這個指令,只會更換第一個出現的La而已,如要全部置換,應再加上全局的命令g
???????????? sed -n 's/La/Oo/gp'? test.txt
??????????? 用法8:替換/刪除字符
??????????? sed -n 's/La//p' test.txt
??????????? //把每一行出現的第一個La刪除(把La置換成空字符串,就是刪除)
??????????? 用法9:替換/通配符
??????????? sed 's/^...//'? test.txt? //把每一行開頭的3個字符刪除。
?????????? sed 's/...$//'? test.txt?? //把每一行末尾3個字符刪除
?????????? 其他用法:
????????????????? 1. sed -n '/AAA/s/234/567/p' test.txt
????????????????? //找到含有AAA的那一行之后,將234換成567
????????????????? 2.sed -n '/AAA/,/DDD/s/B/567/p' test.txt
???????????????? //將含有AAA到含有DDD的那幾行,皆將其中的B換成567
???????????????? 3.sed -n '2,4s/B/567/p' test.txt
???????????????? //從第2行到第4行,皆將其中的B換成567
???????????????? 4.sed G test.txt
???????????????? //在每一行后面增加一空行
???????????????? 5.sed '/^$/d;G' test.txt
???????????????? //將原來的所有空行刪除并在每一行后面增加一空行,這樣在輸出的文本中每一行后面將有且只有一空行
???????????????? 6.sed 'G;G' test.txt
???????????????? //在每一行后面增加兩行空行
???????????????? 7.sed '/regex/{x;p;x;}' test.txt
???????????????? //在匹配式樣“regex”的行之前插入一空行
???????????????? 8.sed '/regex/G'
???????????????? //在匹配式樣“regex”的行之后插入一空行
???????????????? 9.sed 10q
???????????????? //顯示文件中的前10行
???????????????? 10.sed q
???????????????? //顯示文件中的第一行
??????????????? ……
?????? 另外,我今天見到sed -i 的用法
??? 這里sed命令的-i選項,表示直接操作文件ab.file。這里是文本替換操作,將文件中的所有a都替換為b。 默認情況下,sed 是不會修改文件的,只會將操作結果打印到標準輸出(屏幕)。
轉載于:https://www.cnblogs.com/lexus/archive/2013/01/10/2855108.html
總結
以上是生活随笔為你收集整理的ubuntu下sed命令详解 - Dicky - 开源中国社区的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浅谈科研
- 下一篇: 字体加密-58同城简历信息爬取