Linux sed命令详解
生活随笔
收集整理的這篇文章主要介紹了
Linux sed命令详解
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 簡介
- 參數(shù)
- 使用實(shí)列
- 向文件中添加或插入行
- 更改文件中指定的行
- 刪除文件中的行
- 替換文件中的內(nèi)容
- 打印文件中的行
- 打印文件中行號
- 從文件中讀取內(nèi)容
- 向文件中寫入內(nèi)容
簡介
Sed是非交互式的編輯器,用來對文本進(jìn)行過濾和替換操作,它不會修改文件,除非使用shell重定向來保存結(jié)果。默認(rèn)情況下,所有的輸出行都被打印到屏幕上。
參數(shù)
sed的常用選項(xiàng): -e 他告訴sed將下一個參數(shù)解釋為一個sed指令,只有命令行上給出多個sed指令時需要-e選項(xiàng) -f 后跟保存了sed指令的文件 -n 取消默認(rèn)輸出,sed默認(rèn)會輸出所有文本內(nèi)容,使用-n參數(shù)后只顯示處理過的行 -i 直接對內(nèi)容進(jìn)行修改,不加-i時默認(rèn)只是預(yù)覽,不會對文件做實(shí)際修改 sed中編輯命令: -a 追加 向匹配行后面插入內(nèi)容 -c 更改 更改匹配行的內(nèi)容 -i 插入 向匹配行前插入內(nèi)容 -d 刪除 刪除匹配行內(nèi)容 -s 替換 替換匹配的內(nèi)容 -p 打印 打印匹配行內(nèi)容,通常與-n和用 = 打印匹配的行號 r 用用將內(nèi)容讀入文件 w 用與將匹配內(nèi)容寫入文件使用實(shí)列
向文件中添加或插入行
#向第三行后面添加Hello [root@boke home]# sed '3aHello' 2.test aaaaaa bbbbbb cccccc Hello dddddd #在最后一行加入Hello [root@boke home]# sed '$aHello' 3.test aaaaaa bbbbbb cccccc dddddd eeeeee dddddd Hello #向內(nèi)容cccccc前面添加heelo,如果文件中有多行包括cccccc,則每一行后面都會添加 [root@boke home]# sed '/cccccc/ahello' 5.test aaaaaa bbbbbb cccccc hello更改文件中指定的行
#將文件第一行替換成hello [root@boke home]# sed '1chello' 1.test hello bbbbbb cccccc #將包含文件ddd的行替換為hello [root@boke home]# sed '/ddd/chello' 1.test aaaaaa bbbbbb cccccc hello #將最后一行替換為word [root@boke home]# sed '$cword' 1.test aaaaaa bbbbbb cccccc dddddd eeeeee word刪除文件中的行
#刪除文件第二行 [root@boke home]# sed '2d' 1.test aaaaaa cccccc dddddd eeeeee #刪除文件1,2行 [root@boke home]# sed '1,2d' 1.test cccccc dddddd eeeeee #刪除文件最后一行 [root@boke home]# sed '$d' 1.test aaaaaa bbbbbb cccccc #刪除匹配aaa的行 [root@boke home]# sed '/aaa/d' 1.test bbbbbb cccccc dddddd #刪除1~2之外的所有行 [root@boke home]# sed '1,2!d' 1.test aaaaaa bbbbbb #刪除空行 [root@boke home]# cat 1.test aaaaaabbbbbb cccccc [root@boke home]# sed '/^$/d' 1.test aaaaaa bbbbbb cccccc #刪除不匹配aa或bb的所有行 [root@boke home]# cat 2.test aaaaaa bbbbbb cccccc dddddd eeeeee dddddd [root@boke home]# sed '/aa\|bb/!d' 2.test aaaaaa bbbbbb替換文件中的內(nèi)容
#將文本123替換為word,默認(rèn)只替換每行第一個 [root@boke home]# cat 3.test aaabbb 123 123 cccccc 234[root@boke home]# sed 's/123/word/' 3.test aaabbb word 123 cccccc 234 #將文本中所有123行替換為word [root@boke home]# cat 3.test aaabbb 123 123 cccccc 234[root@boke home]# sed 's/123/word/g' 3.test aaabbb word word cccccc 234 #將每行中第二個匹配的123替換為hello [root@boke home]# cat 3.test aaabbb 123 123 cccccc 234[root@boke home]# sed 's/123/word/2' 3.test aaabbb 123 word cccccc 234 #將每行所有匹配的123替換為word,并將替換后內(nèi)容寫入3.txt [root@boke home]# cat 3.test aaabbb 123 123 cccccc 123 [root@boke home]# sed -n 's/123/word/gpw 3.txt' 3.test word word word #刪除#號注釋 [root@boke home]# cat 5.test #aaaaaa #bbbbbb #cccccc #dddddd [root@boke home]# sed 's/^#//' 5.test aaaaaa bbbbbb cccccc dddddd #刪除文本中的空格行 [root@boke home]# cat 5.test #aaaaaa#bbbbbb#cccccc#dddddd[root@boke home]# sed '/^$/d' 5.test #aaaaaa #bbbbbb #cccccc #dddddd [root@boke home]# ^C [root@boke home]#打印文件中的行
#打印文件中第2行內(nèi)容 [root@boke home]# cat 2.test aaaaaa bbbbbb cccccc dddddd eeeeee dddddd [root@boke home]# sed -n '3p' 1.test bbbbbb #打印文件最后一行 [root@boke home]# cat 1.test aaaaaabbbbbb cccccc [root@boke home]# sed -n '$p' 1.test cccccc #打印文件1~3行 [root@boke home]# cat 2.test aaaaaa bbbbbb cccccc dddddd eeeeee dddddd [root@boke home]# sed -n '1,3p' 2.test aaaaaa bbbbbb cccccc #打印文件3行到最后一行內(nèi)容 [root@boke home]# cat 2.test aaaaaa bbbbbb cccccc dddddd eeeeee dddddd [root@boke home]# sed -n '3,$p' 2.test cccccc dddddd eeeeee dddddd #逐行讀取文件,打印匹配ddd的行 [root@boke home]# cat 2.test 1.aaaaaa 2.bbbbbb 3.cccccc 4.dddddd 5.eeeeee 6.dddddd [root@boke home]# sed -n '/dd/p' 2.test 4.dddddd 6.dddddd #打印從匹配的cc行至最后一行內(nèi)容 [root@boke home]# cat 2.test 1.aaaaaa 2.bbbbbb 3.cccccc 4.dddddd 5.eeeeee 6.dddddd [root@boke home]# sed -n '/cc/,$p' 2.test 3.cccccc 4.dddddd 5.eeeeee 6.dddddd打印文件中行號
#打印文件的行號 [root@boke home]# wc -l 1.test 4 1.test [root@boke home]# sed -n '$=' 1.test 4 #打印匹配cc的行號 [root@boke home]# cat 2.test 1.aaaaaa 2.bbbbbb 3.cccccc 4.dddddd 5.eeeeee 6.dddddd [root@boke home]# sed -n '/cc/=' 2.test 3 #打印匹配cc行號及內(nèi)容 [root@boke home]# cat 2.test 1.aaaaaa 2.bbbbbb 3.cccccc 4.dddddd 5.eeeeee 6.dddddd [root@boke home]# sed -n '/cc/{=;p}' 2.test 3 3.cccccc從文件中讀取內(nèi)容
#將1.test內(nèi)容,讀入2.test中,會在1.test中的每一行后讀入2.test內(nèi)容 [root@boke home]# cat 1.test 111 222 333 [root@boke home]# cat 2.test aaa bbb ccc [root@boke home]# sed 'r 2.test' 1.test 111 aaa bbb ccc 222 aaa bbb ccc 333 aaa bbb ccc #在1.test第2行插入2.test的內(nèi)容 [root@boke home]# cat 1.test 111 222 333 [root@boke home]# cat 2.test aaa bbb ccc [root@boke home]# sed '2r 2.test' 1.test 111 222 aaa bbb ccc 333 #在1.test的最后一行插入2.test的內(nèi)容 [root@boke home]# cat 1.test 111 222 333 [root@boke home]# cat 2.test aaa bbb ccc [root@boke home]# sed '$r 2.test' 1.test 111 222 333 aaa bbb ccc向文件中寫入內(nèi)容
#將1.test文件的內(nèi)容寫入2.test,如果2.test文件不存在則創(chuàng)建,如果2.test存在則覆蓋之前內(nèi)容 [root@boke home]# cat 1.test 111 222 333 [root@boke home]# cat 2.test aaa bbb ccc [root@boke home]# cat 2.test 111 222 #將文件1.test中第二行寫入2.test中 [root@boke home]# cat 1.test 111 222 333 [root@boke home]# cat 2.test aaa bbb ccc [root@boke home]# sed -n '2w 2.test' 1.test [root@boke home]# cat 2.test 222 #將1.test第一行與最后一行寫入2.test中 [root@boke home]# cat 1.test 111 222 333 [root@boke home]# cat 2.test aaa bbb ccc [root@boke home]# sed -n -e '1w 2.test' -e '$w 2.test' 1.test [root@boke home]# cat 2.test 111 333 #將1.test中匹配123或abc的行內(nèi)容,寫入2.test、 [root@boke home]# cat 1.test 123 abc 345 123,aaa,abc,ddd123 [root@boke home]# sed -n '/123\|abc/w 2.test' 1.test [root@boke home]# cat 2.test 123 abc 123,aaa,abc,ddd123 #將1.test中匹配234的行到最后一行的內(nèi)容寫入2.test中 [root@boke home]# cat 1.test 111 234 aaa bbb ccc [root@boke home]# sed -n '/234/,$w 2.test' 1.test [root@boke home]# cat 2.test 234 aaa bbb cccest
111
333
總結(jié)
以上是生活随笔為你收集整理的Linux sed命令详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 完整三菱 FX5U定位模块5轴 2轴插补
- 下一篇: Linux设备驱动-platform虚拟