经常用到的几个sed命令

原创 2015年07月10日 16:22:22

最近写shell脚本,经常用到一些需求,现梳理一下。

 

现在,有一个o.sh,其文件内容如下:

[root@ser6-51 dandan]# cat o.sh

aaaa
bbbb
[mysqld]
ccc
ddd
[mysqla]
eee

 

1:在某行行尾添加内容

#在aaaa这一行最后添加hello这个字符串

#$表示行尾的意思

[root@ser6-51 dandan]# sed -i '/aaaa/s/$/hello/' o.sh

[root@ser6-51 dandan]# cat o.sh

aaaahello
bbbb
[mysqld]
ccc
ddd
[mysqla]
Eee
 

注意:如果要添加的字符串中包含特殊字符,需要用\进行转义。

比如:这里想在bbbb这一行后面添加:/usr/local/mysql

[root@ser6-51 dandan]# sed -i '/bbbb/s/$/\/usr\/local\/mysql/' o.sh

[root@ser6-51 dandan]# cat o.sh

aaaahello
bbbb/usr/local/mysql
[mysqld]
ccc
ddd
[mysqla]
eee


2:在某一行后面添加新行

 

#在ccc这一行后面添加一个新行hello(用\n表示换行)

[root@ser6-51 dandan]# sed -i '/ccc/s/$/\nhello/' o.sh

[root@ser6-51 dandan]# cat o.sh

aaaahello
bbbb/usr/local/mysql
[mysqld]
ccc
hello
ddd
[mysqla]
eee

 

3:往文件最后添加一行

#在文件末尾添加一行hello dandan

[root@ser6-51 dandan]# echo -e "hello dandan" >> o.sh

[root@ser6-51 dandan]# cat o.sh

aaaahello
bbbb/usr/local/mysql
[mysqld]
ccc
hello
ddd
[mysqla]
eee
hello dandan

 

4:删除某一行

将hello dandan那一行删除

  

aaaahello
bbbb/usr/local/mysql
[mysqld]
ccc
hello
ddd
[mysqla]
eee

[root@ser6-51 dandan]# sed -i '/hello dandan/d' o.sh

[root@ser6-51 dandan]# cat o.sh

如果对文件内容特别熟悉,特别有把握,可以这样:

[root@ser6-51 dandan]# sed -i '/^hello/d' o.sh

[root@ser6-51 dandan]# cat o.sh

aaaahello
bbbb/usr/local/mysql
[mysqld]
ccc
ddd
[mysqla]
eee

先定位到以hello开头的那一行,然后删除。

 

5:删除特定行的特定内容

 

#将这一行bbbb/usr/local/mysql的字符串/usr/local/mysql删除。

 

[root@ser6-51 dandan]# sed -i '/^bbbb/s/\/usr\/local\/mysql//' o.sh 

 

--注意:这里最后是两个//,否则报错。

[root@ser6-51 dandan]# cat o.sh

aaaahello
bbbb
[mysqld]
ccc
ddd
[mysqla]
eee


注意:sed命令单引号之间的内容都是以/开头和结尾的,切勿落掉了/.

 

6:替换特定行的特定内容

类似于5删除特定行的特定内容,只需要添加替换后的内容即可。

如:

[root@ser6-70 download]# cat a.sh
[mysqld]
datadir=/var/lib/mysql
eew
aa
e
hello
date

将datadir那一行的/var/lib/mysql替换为/data/mysql/data

[root@ser6-70 download]#  sed -i '/^datadir/s/\/var\/lib\/mysql/\/data\/mysql\/data/' a.sh 
[root@ser6-70 download]# cat a.sh
[mysqld]
datadir=/data/mysql/data
eew
aa
e
hello
date


7:截取部分行到新文件

要切出从2012-02-09到2012-09-10的所有数据行,(假设你的日志文件以yyyy-MM-dd的日期格式开头)只需要:

sed -n '/^2012-02-09/,/^2012-09-10/p' whole.log > part.log


8:在首行添加内容

如:在首行添加use mysql;

sed -i '1i\use mysql;' t1.bak


 --待深入研究sed,到时再多做补充。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Sed 常用命令

#1 sed 变量替换 ipp=1.1.1.1 #将synrecvd文本中的1.1.1.1都清除 并且删除空行 echo $ipp | sed -i "s/$ipp//g;/^$/d"...

sed 常用命令

sed  简介:非交谈式编辑器(vi和ex都属于交谈式编辑器) 采用非破坏性的编辑方式,也就是不会改变文件的内容,除非了使用输出转向,默认是所有的输出都 会显示在屏幕上。 $sed -v(--vers...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

awk和sed命令详解

1、awk命令 awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。 awk命令形式: awk [-...

sed常用命令

SED 常用commandp (sed –n) 显示行= 显示行号 =在这里是commandg 加空行d 删除行/pattern/s/原串/替换串   sed '/disable/s/yes/no...

sed常用命令

1. Sed简介 sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容...

Linux下面经常用到的几个命令

http://www.iteye.com/topic/1118755 欢迎大家补充。。。 http://blog.csdn.net/hopestar2/article/details/659...

LINUX 常用几个命令

1.显示日期的指令: date [xiaolou@localhost Desktop]$ date Sat Feb 14 18:48:07 PST 2015 [root@test root...

几个经常用到的常规class

/** * 常规类 */ class Fun {    //邮件发送函数          static function send_mail($to, $name, $subject =...

几个adb常用命令

1. 显示当前运行的全部模拟器:     adb devices 2. 安装应用程序:     adb install -r 123.apk 3. 获取模拟器中的文件:   ...

HDFS几个常用命令

Hdfs是Hadoop Distributed File System(Hadoop分布式文件系统)的缩写,是Hadoop家族中一个十分重要的组件,也是学习Hadoop的重要一步且十分关键的一步,因为...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)