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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

《sed的流艺术之四》-linux命令五分钟系列之二十四

發(fā)布時間:2025/1/21 linux 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《sed的流艺术之四》-linux命令五分钟系列之二十四 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

[正文開始]

上文接《sed的流藝術之三》-linux命令五分鐘系列之二十三

例十 如果設定了很多-e的command,它們的執(zhí)行順序是怎樣的呢?

[rocrocket@rocrocket programming]$ cat mysed.txt
Beijing 2003
Beijing 2004
Beijing 2005
Beijing 2006Beijing 2007
Beijing 2008
[rocrocket@rocrocket programming]$ sed -e ‘s/Beijing/London/g’ -e ‘/Beijing/d’ mysed.txt
London 2003
London 2004
London 2005
London 2006
London 2007
London 2008

后一個-e中包含了刪除Beijing所在行,但是最后的結果卻是所有行都輸出了,其實這就是由執(zhí)行順序導致的,第一個-e已經(jīng)將Beijing都替換成了London了,所以怪不得第二個-e找不到Beijing了。

例十一 讀取一個特定文件的內(nèi)容,將其插入到本文件指定的地方:

[rocrocket@rocrocket programming]$ cat ins.txt
====China====
[rocrocket@rocrocket programming]$ cat mysed.txt
Beijing 2003
Beijing 2004
Beijing 2005
Beijing 2006
Beijing 2007
Beijing 2008
[rocrocket@rocrocket programming]$ sed ‘/2005/r ins.txt’ mysed.txt
Beijing 2003
Beijing 2004
Beijing 2005
====China====
Beijing 2006
Beijing 2007
Beijing 2008

此命令用于在含有2005的行下面插入ins.txt文件的內(nèi)容。

例十二 將某些指定行寫入到特定文件中

[rocrocket@rocrocket programming]$ sed ‘/200[4-6]/w new.txt’ mysed.txt
Beijing 2003
Beijing 2004
Beijing 2005
Beijing 2006
Beijing 2007
Beijing 2008
[rocrocket@rocrocket programming]$ cat new.txt
Beijing 2004
Beijing 2005
Beijing 2006

看,w new.txt表示將含有2004、2005、2006的行寫入到new.txt文件中。

例十三 使用a\在特定行“下面”插入特定內(nèi)容

[rocrocket@rocrocket programming]$ cat new.txt
Beijing 2004
Beijing 2005
Beijing 2006
[rocrocket@rocrocket programming]$ sed ‘/2004/a\China’ mysed.txt
Beijing 2003
Beijing 2004
China
Beijing 2005
Beijing 2006
Beijing 2007
Beijing 2008

使用a\然后加上需要加的內(nèi)容即可。

例十四 使用i\在特定行“上面”插入特定內(nèi)容

[rocrocket@rocrocket programming]$ sed ‘/2004/i\China’ mysed.txt
Beijing 2003
China
Beijing 2004
Beijing 2005
Beijing 2006
Beijing 2007
Beijing 2008

例十五 替換特定字符

[rocrocket@rocrocket programming]$ cat mysed.txt
Beijing 2003
Beijing 2004
Beijing 2005
Beijing 2006
Beijing 2007
Beijing 2008
[rocrocket@rocrocket programming]$ sed ‘y/eijng/EIJNG/’ mysed.txt
BEIJING 2003
BEIJING 2004
BEIJING 2005
BEIJING 2006
BEIJING 2007
BEIJING 2008

使用了y就表示將第一欄的每個字符都替換為相對應的第二欄的字符。

例十六 對匹配行的下一行進行處理

[rocrocket@rocrocket programming]$ cat mysed.txt
Beijing 2003
Beijing 2004
Beijing 2005
Beijing 2006
Beijing 2007
Beijing 2008
[rocrocket@rocrocket programming]$ sed ‘/2004/{n;y/eijng/EIJNG/;}’ mysed.txt
Beijing 2003
Beijing 2004
BEIJING 2005
Beijing 2006
Beijing 2007
Beijing 2008

這個例子就是找含有2004的行,然后將它下面的一行中的eijng替換為大寫的EIJNG。這里面的“n;”起到了“移至下一行”的作用。n背后的含義其實是將下一行放到模式空間中去。

[rocrocket@rocrocket programming]$ cat mysed.txt
Beijing 2003
Beijing 2004
Beijing 2005
Beijing 2006
Beijing 2007
Beijing 2008
[rocrocket@rocrocket programming]$ sed ‘/200/{n;y/eijng/EIJNG/;}’ mysed.txt
Beijing 2003
BEIJING 2004
Beijing 2005
BEIJING 2006
Beijing 2007
BEIJING 2008

這個例子更加典型,你可以發(fā)現(xiàn),BEIJING是隔行出現(xiàn)的。你知道為什么么?不說答案了,相信你能自己思考出來!

ps:sed的流藝術系列到這里就結束了:)

ps:其實sed的學問還很大,正則表達式也有很多需要學習的地方,我也在學習中…這個小系列,就當拋磚引玉了,希望對你有用!

over~


轉載于:https://blog.51cto.com/358845/1693602

總結

以上是生活随笔為你收集整理的《sed的流艺术之四》-linux命令五分钟系列之二十四的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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