sed 批量替換文件


1.想把某個目錄下包含only-upstage的文件都替換成onlyu-base

sed  -i -e 's/onlyu-upstage/onlyu-base/g'  ` grep -rl onlyu-upstage *`

 

2. 打印文件中間幾行,顯示28-38 行中間的內容

# cat /etc/cli.cfg | head -n 38 |tail -n +28
head -n 38 顯示38行前面的
tail -n +28 從28行開始顯示

# cat /etc/cli.cfg | tail -n +28 |head -n 10
從第28行開始顯示,顯示前面10行

 

3. sed 打印匹配內容行號

# sed -n -e '/build/=' /etc/cli.cfg
28

4. sed 打印匹配內容和行號
# sed -n -e '/build/p' -e '/build/=' /etc/cli.cfg
[cli_rebuild]
28

5.有時候制表符確實很難辨認,有一個方法可以看出一段空格到底是由若干個空格組成的還是由一個制表符組成的

復制代碼
[zookeeper@master rh]$ sed -n l test.txt 
this is first line$
this is second line$
this is third line$
this is fourth line$
this\tfifth line$
happy everyday$
end$
復制代碼

如果是制表符(TAB),那么會顯示為\t符號,如果是空格,就會原樣顯示。通過此方法即可以判斷制表符和空格了。

這是sed中的用法:l  [n]

用明確的形式顯示模版空間的數據:

①、以C-style的轉義形式顯示不能打印的字符(換行符、制表符等)和本身的\Char形式;

②、長的行將進行分割,以字符\結尾的行表示分割,以字符$結尾的行表示分割結束。

③、n指定顯示行的長度,超過就進行分割;若為0表示不分割所有行;沒有指定時就取命令行選項-l的設置,再沒有就取默認值70。這是GNU的擴展功能。

其實cut的-d選項的默認間隔符就是制表符,所以當你就是要使用制表符的時候,完全就可以省略-d選項,而直接用-f來取域就可以了!如果你設定一個空格為間隔符,使用 -d ' '而且,你只能在-d后面設置一個空格,可不許設置多個空格,因為cut只允許間隔符是一個字符。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM