Linux sed 命令

動做:
p 打印輸出
d 刪除操做
a 在指定的行後面添加一行內容
i 在指定的行前面添加一行內容bash

 

一、查看操做url

sed -n '5p' file                                         //只查看文件的第5行
sed -n '3,5p' file                                      //查看文件的第3到第5行
sed -n '5,$ p' file                                   //打印第5到最後一行

  

二、刪除操做blog

sed '3 d' 1.txt                                //刪除文件的第3行 ,而後將內容進行輸出,不是直接操做的文件。
sed '3,5 d' 1.txt                            //刪除第三行到五行。
sed '3,$ d' 1.txt                           //刪除第三行到最後一行。

  


三、添加操做文檔

sed '2a word' file                          //在第二行後面添加一行,內容爲word

sed '3i word' file                          //在第三行前面添加一行,內容爲word 

  

 

三、查找操做博客

sed -n '/root/p' file                         //只輸出root關鍵字的行

sed '/root/d' file                           //將含有root的行刪除,而後輸出,加上-i能夠操做原文件

  


四、替換操做class

sed 's/root/new/' file                          //將文件中的root替換成new,每行只替換一次
sed 's/root/new/g' file                       //將每行的全部root所有替換成new        g替換屢次
sed '3,4s/root/new/g' 1.txt                  //只替換第3到第4行的root爲new

  

sed 綜合運用sed

*****************************************************file

文檔內容以下:grep

19-羅錦輝:http://www.cnblogs.com/jw1519
20-甘露秋:http://www.cnblogs.com/bazhahei
21-張靖:http://www.cnblogs.com/zj21
22-黃庭輝:http://www.cnblogs.com/1796440575hth
23-劉波:http://www.cnblogs.com/oppppo
24-楊俊傑:http://www.cnblogs.com/duolaameng
25-侯寶:word

一、只輸出學生姓名
cat jw |sed 's/[0-9 a-Z ://.\-]/ /g'

二、只輸出每一個學生的url

cat jw |sed 's/.*:\/.//g' |sed '/.*:/d'

三、只輸出我的博客裏的學號
cat jw |sed 's/-.*/ /g'

四、只輸出我的博客中,兩個字姓名的學生名
cat jw |sed 's/[0-9 a-Z ://.\-]//g' |grep -v '...'

五、只輸出每一個人博客地址的最後一段,即.com/後面的一段內容
cat jw |sed 's/.*\// /g' |sed 's/.*://g'

六、只輸出最後一段所有是字母的
cat jw |sed 's/.*\// /g' |sed 's/.*[0-9].*/ /'|

七、只輸出最後一段含有大寫字母的
cat jw |sed 's/.*\// /g' |sed -n '/[A-Z]/p'

將/etc/passwd的最後一行所有改爲/bin/bash

cat /etc/passwd|sed  's/\(.*:\)\(.*\)/\1\/bin\/bash/'                       //    (.*:) 第一部分  (.*)第二部分        1表示第一部分

2.將/etc/passwd每行前面的用戶名,添加到最後一段
如:root:x:0:0:root:/root:/bin/bash
處理後應該爲
root:x:0:0:root:/root:/bin/bash:root

cat passwd |sed 's/\(^[a-Z]*\)\(.*\)/&:\1/'                       // &表示所有

 

3.一文本內容以下:
192.168.100.2
172.16.5.4
10.101.2.5
133.37.25.21

經過命令將其處理成以下效果(轉換到一行,經過逗號隔開,每行內容用單引號引發來)
'192.168.100.2','172.16.5.4','10.101.2.5','133.37.25.21'

cat 1.txt |sed "s/^\|$/'/g" |tr '\n' ','|sed 's/,$/\n/g'                     //先將每行文本的先後加上單引號,再將換行符轉換爲逗號,在將最後一個逗號轉換爲換行符。  ^ 開始     $結尾    |   或者
相關文章
相關標籤/搜索