Linux中sed使用


Sed是stream editor(流編輯器)是操作,過濾和轉換文本內容的強大工具。常用功能有增刪改查,過濾,取行。

增:

追加文本到指定行后          a

插入文本                            i

例子:單行增加

[root@localhost ~]# sed '2a 107,dandan' test.txt

124567668

dfgjkllkjhvkl

107,dandan

Adsfkadsjf

[root@localhost ~]# sed '2i 107,dandan' test.txt

124567668

107,dandan

dfgjkllkjhvkl

adsfkadsjf

一個是追加,一個是插入

多行增加 \n換行

[root@localhost ~]# sed '2i 107,dandan\naasdfasdf' test.txt

124567668

107,dandan

aasdfasdf

dfgjkllkjhvkl

adsfkadsjf

企業案例:

在我們學習系統優化時,有一個優化點:更改ssh服務遠程登錄的配置。主要的操作是在ssh的配置文件中加入下面五行文本

  1. Port 52113
  2. PermintRootLogin no
  3. PermitEmptyPasswords no
  4. UseDNS no
  5. GSSAPIAuthentication no

刪除指定行    d

不指定幾行,默認全部刪除

按行替換

用新行取代舊行          c

文本替換

Sed -I ‘s###g’ #就是定界符

如果沒有g,就是不是全局替換,g是全局都會改變

Sed -r使用擴展正則表達式,(.*) \1

&做替換批量重命名文件

[root@localhost ~]# cd /test
[root@localhost test]# ls
[root@localhost test]# touch stu_102999_{1..5}_finished.jpg
[root@localhost test]# ls
stu_102999_1_finished.jpg  stu_102999_3_finished.jpg  stu_102999_5_finished.jpg
stu_102999_2_finished.jpg  stu_102999_4_finished.jpg
[root@localhost test]# ls  *.jpg
stu_102999_1_finished.jpg  stu_102999_3_finished.jpg  stu_102999_5_finished.jpg
stu_102999_2_finished.jpg  stu_102999_4_finished.jpg
[root@localhost test]# ls  *.jpg | sed -r 's#(^.*)_finished.*#mv & \1.jpg#g'
mv stu_102999_1_finished.jpg stu_102999_1.jpg
mv stu_102999_2_finished.jpg stu_102999_2.jpg
mv stu_102999_3_finished.jpg stu_102999_3.jpg
mv stu_102999_4_finished.jpg stu_102999_4.jpg
mv stu_102999_5_finished.jpg stu_102999_5.jpg
[root@localhost test]# ls  *.jpg | sed -r 's#(^.*)_finished.*#mv & \1.jpg#g' |bash
[root@localhost test]# ls
stu_102999_1.jpg  stu_102999_2.jpg  stu_102999_3.jpg  stu_102999_4.jpg  stu_102999_5.jpg

查:

輸出指定內容  p 但是默認會輸出2次匹配的結果,因此使用n取消默認輸出

[root@localhost ~]# sed '2p' test.txt 
124567668
dfgjkllkjhvkl
dfgjkllkjhvkl
adsfkadsjf
[root@localhost ~]# sed -n '2p' test.txt 
Dfgjkllkjhvkl
2-3行
[root@localhost ~]# sed -n '2,3p' test.txt 
dfgjkllkjhvkl
adsfkadsjf

1~2p就是取1,3,5,奇數行顯示所有奇數行

命令的執行df -h == echo ‘df -h’ | bash

 


免責聲明!

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



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