码迷,mamicode.com
首页 > 其他好文 > 详细

五.sed附加命令

时间:2017-10-12 21:45:16      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:测试文件   使用   获取   并且   内容   admin   john   可见   str   

1. 追加命令 a

使用命令a可以在指定位置的后面插入新行. 语法如下:

$ sed ‘[address] a the-line-to-append‘ input-file

比如在第2行后面追加一行:

$ sed ‘2 a 203,Jack Johnson,Engineer‘ employee.txt

101,John Doe,CEO
102,Jason Smith,IT Manager
203,Jack Johnson,Engineer
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales Manager

在employee.txt末尾追加一行:

$ sed ‘$ a 106,Jack Johnson,Engineer‘ employee.txt

 

sed也可以追加多行:

在匹配Jason的行后面追加两行:

$ sed ‘/Jason/a\
 203,Jack Jahnson,Engineer\
 204,Mark Smith,Sales Engineer‘ employee.txt


101,John Doe,CEO
102,Jason Smith,IT Manager
203,Jack Jahnson,Engineer
204,Mark Smith,Sales Engineer
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales Manager

 

2. 插入命令 i

插入命令insert和追加命令类似,只不过是在指定位置之前插入行。语法如下:

sed ‘[address] i the-line-to-insert‘ input-file

具体命令不多讲,和上面类似

 

3. 修改命令 c

修改命令change可以用新行取代旧行。

语法如下:

sed ‘[address] c the-line-to-change‘ input-file

具体命令不多讲,完全类似

 

4.打印不可见字符 l

请注意,这命令是l(m,n,l中的l)不是i(不是h,i,j中的i)

命令l可以打印不可见的字符,比如制表符\t,行尾标志$等

先建立测试文件:

$ cat tabfile.txt

fname First Name
lname Last Name
mname Middle Name

使用命令l,把制表符显示为\t,行尾标志显示为$

sed -n ‘l‘ tabfile.txt

fname\tFirst Name$
lname\tLast Name$
mname\tMiddle Name$

 

如果在l后面指定了数字,那么会在第n个字符处自动折行。

 

5.打印等号 =

命令=会在每一行后面显示该行的行号。

打印所有行号:

$ sed ‘=‘ input-file

 

只打印1,2,3行的行号:

$ sed ‘1,3 =‘ input-file

 

打印包含关键字‘Jane‘的行的行号

$ sed ‘/Jane/ =‘ input-file

 

6.转换字符, y

命令y根据对应位置转换字符。

下面例子,把abcde换成对应的ABCDE.

$ sed ‘y/abcde/ABCDE/‘ employee.txt

 

7.操作多个文件

前面都是用sed命令操作单个文件,也可以同时操作多个文件。

$ sed -n ‘/root/ p‘ /etc/paswd /etc/group

 

8.退出sed, q

命令q终止正在执行的命令并退出sed.

之前提到sed的执行流程是: 读取数据,执行命令,打印结果,重复循环。

当sed 遇到q命令,便立刻退出,当前循环中的后续命令不会被执行,也不会继续循环。

 

9.从文件中读取数据,r

在处理输入文件时,命令r会从另外一个文件中读取内容,并在指定的位置打印出来。例如:

$ sed ‘$ r log.txt‘ employee.txt

上面这条命令会读取log.txt的内容,并在打印employee.txt最后一行之后,把读取的内容打印出来。

 

也可以给命令r指定一个模式,下面的例子将读取log.txt的内容,并且在匹配‘Raj‘的行后面打印出来。

$ sed ‘/Raj/ r log.txt‘ employee.txt

 

10. sed命令选项

-n  屏蔽默认输出

-f 调用脚本文件

-e 指定多个命令

-i 修改输入文件

-c -i修改输入文件的同时,会把文件的拥有者也改变了。 但是-c不会修改文件的拥有者

-l 指定一行的长度,超过指定的长度会自动换行。

sed -n -l 20 ‘l‘ input-file.txt

sed -n ‘l 20‘ input-file.txt

上面两个命令获取相同的结果

 

五.sed附加命令

标签:测试文件   使用   获取   并且   内容   admin   john   可见   str   

原文地址:http://www.cnblogs.com/NewMan13/p/7658022.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!