Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26187801
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类:

2010-01-15 14:48:58

SED常用操作命令整理

[整理人:hkebao#126.com 整理时间:2010-1-15]

操作的示范文本

[mysqld]

master-host = 19.2.178.158

master-user = root

master-password = 147852369

replicate-ignore-db = mysql

port            = 3306

socket          = /tmp/mysql.sock

简单的摘录了一段My.cnf 的配置信息出来。演示各个操作的方法

一、简单打印

1.1    sed -n '/port/p' my.cnf

输出:port            = 3306

含义:打印包含port 关键字的一行

 

1.2    sed '/port/p' my.cnf

输出:

[mysqld]

master-host = 19.2.178.158

master-user = root

master-password = 147852369

replicate-ignore-db = mysql

port            = 3306

port            = 3306

socket          = /tmp/mysql.sock

含义:会把内容全部输出,同时会打印匹配的一行

 

1.3    sed -n '/master-host/,/port/p' my.cnf

输出:

master-host = 19.2.178.158

master-user = root

master-password = 147852369

replicate-ignore-db = mysql

port            = 3306

含义:表示打印输出 master-hostport所确定的之间的行将被打印出来

 

二、删除操作

2.1 sed '3d' my.cnf

输出:

[mysqld]

master-host = 19.2.178.158

master-password = 147852369

replicate-ignore-db = mysql

port            = 3306

socket          = /tmp/mysql.sock

含义:将第三行删除之后再输出。

 

2.2 sed '3,$d' my.cnf

输出:

[mysqld]

master-host = 19.2.178.158

含义:将第三行到未尾行之间的删除掉再打印出来。

2.3 sed '/port/d' my.cnf

输出:

[mysqld]

master-host = 19.2.178.158

master-user = root

master-password = 147852369

replicate-ignore-db = mysql

socket          = /tmp/mysql.sock

含义:查找到包含port 关键字的行,并将其删除掉再打印输出

 

三、替换操作 s命令)

3.1 sed '/master-host/,/port/s/$/**?VACA**/' my.cnf

输出:

[mysqld]

master-host = 19.2.178.158**?VACA**

master-user = root**?VACA**

master-password = 147852369**?VACA**

replicate-ignore-db = mysql**?VACA**

port            = 3306**?VACA**

socket          = /tmp/mysql.sock

含义:这回我们的命令是s 即找到匹配的模式并将其替换过来。

查找位于master-hostport 之间的行,将其未尾用**?VACA** 替换掉!

 

3.2 sed -n 's/port/PORT/pg' my.cnf

输出:

PORT            = 3306

含义:将所有匹配到的port行替换成指定的内容,并打印输出

 

 

四、多个编辑命令(类似的操作就与&&命令相似即同时操作两个以上的SHELL命令)

同时带多个命令去执行操作的

4.1 sed -e '1,3d' -e 's/port/PORT/' my.cnf

输出结果:

master-password = 147852369

replicate-ignore-db = mysql

PORT            = 3306

socket          = /tmp/mysql.sock

含义:执行两个命令,第一个命令表示将1-3行删除 然后再执行第二个命令替换

 

五、从文件读入内容(r 命令)

创建一新文件newfile内容如下

Nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn

命令:sed '/port/r newfile' my.cnf

输出:

[mysqld]

master-host = 19.2.178.158

master-user = root

master-password = 147852369

replicate-ignore-db = mysql

port            = 3306             #表示在指定的行后面追加一个新文件的内容进来

nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn

socket          = /tmp/mysql.sock

含义:可以将一个外部的文件追加进来非常方便!

 

六、写入文件(w 命令)

命令:sed -n '/port/w newfile' my.cnf

输出:生成一个新文件newfile 其内容如下:

port            = 3306

含义:在指定的文件内查找匹配到的行,然后将其保存输出到一个新文件中去!

 

七、追加命令(a)

命令:sed '/port/a ------>' my.cnf

输出:

[mysqld]

master-host = 19.2.178.158

master-user = root

master-password = 147852369

replicate-ignore-db = mysql

port            = 3306

------>

socket          = /tmp/mysql.sock

含义:表示在port下一行追加内容进来

 

八、插入(i命令)

命令:sed '/port/i\--------->' my.cnf

输出:

[mysqld]

master-host = 19.2.178.158

master-user = root

master-password = 147852369

replicate-ignore-db = mysql

--------->

port            = 3306

socket          = /tmp/mysql.sock

含义:在指定的匹配行前面插入指定的内容进来!

 

 

 


阅读(630) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~