标签:测试文件 使用 获取 并且 内容 admin john 可见 str
使用命令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
插入命令insert和追加命令类似,只不过是在指定位置之前插入行。语法如下:
sed ‘[address] i the-line-to-insert‘ input-file
具体命令不多讲,和上面类似
修改命令change可以用新行取代旧行。
语法如下:
sed ‘[address] c the-line-to-change‘ input-file
具体命令不多讲,完全类似
请注意,这命令是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个字符处自动折行。
命令=会在每一行后面显示该行的行号。
打印所有行号:
$ sed ‘=‘ input-file
只打印1,2,3行的行号:
$ sed ‘1,3 =‘ input-file
打印包含关键字‘Jane‘的行的行号
$ sed ‘/Jane/ =‘ input-file
命令y根据对应位置转换字符。
下面例子,把abcde换成对应的ABCDE.
$ sed ‘y/abcde/ABCDE/‘ employee.txt
前面都是用sed命令操作单个文件,也可以同时操作多个文件。
$ sed -n ‘/root/ p‘ /etc/paswd /etc/group
命令q终止正在执行的命令并退出sed.
之前提到sed的执行流程是: 读取数据,执行命令,打印结果,重复循环。
当sed 遇到q命令,便立刻退出,当前循环中的后续命令不会被执行,也不会继续循环。
在处理输入文件时,命令r会从另外一个文件中读取内容,并在指定的位置打印出来。例如:
$ sed ‘$ r log.txt‘ employee.txt
上面这条命令会读取log.txt的内容,并在打印employee.txt最后一行之后,把读取的内容打印出来。
也可以给命令r指定一个模式,下面的例子将读取log.txt的内容,并且在匹配‘Raj‘的行后面打印出来。
$ sed ‘/Raj/ r log.txt‘ employee.txt
-n 屏蔽默认输出
-f 调用脚本文件
-e 指定多个命令
-i 修改输入文件
-c -i修改输入文件的同时,会把文件的拥有者也改变了。 但是-c不会修改文件的拥有者
-l 指定一行的长度,超过指定的长度会自动换行。
sed -n -l 20 ‘l‘ input-file.txt
sed -n ‘l 20‘ input-file.txt
上面两个命令获取相同的结果
标签:测试文件 使用 获取 并且 内容 admin john 可见 str
原文地址:http://www.cnblogs.com/NewMan13/p/7658022.html