Linux中的sed
sed [选项] [动作] 文件
选项:
-n :静默模式。使用-n则只有经过sed处理的那一行。
-e :允许多重编辑;
-f :结果默认输出到终端,使用-f会将结果写在一个文件内
-i :直接对原文件进行修改。(危险)
-p :打印模式空间的内容
s/regexp/replacement/flag 用replacement替换模式空间由regexp匹配到的内容
动作:
[n1[,n2]]function
n1, n2 :表示范围,可以省略
function:
a xxxxx:将xxxx添加到匹配到的行的后一行
d :删除所匹配到的行
i xxxxx:将xxxx添加到匹配到的行的前一行
p :打印输出所匹配到的行,通常 p 会与参数 sed -n 一起运行
s :取代,替换指定的字符串
c :以行为单位进行替换
应用举例:
1、找出包含数字 0 的行
# sed -n '/0/p' /tmp/passwd
# nl /tmp/passwd | sed -n '/0/p'
1、找出包含任意数字的行
# sed -n '/[0-9]/p' /tmp/passwd
2、查找不包含数字 0 的行
# sed '/0/d' /tmp/passwd2、删除前5行中,包括数字0的行
3、将 /etc/passwd 的内容列出并且列印行号,同时,请将第 2~5 行删除!
# nl /etc/passwd | sed '2,5d'
1 root:x:0:0:root:/root:/bin/bash
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown4、只要删除第 2 行
# nl /etc/passwd | sed '2d'
5、要删除第 3 到最后一行
# nl /etc/passwd | sed '3,$d'
6、在第二行后追加一行i am zxhk
# nl /etc/passwd | sed '2a i am zxhk'7、在第二行前追加一行i am zxhk
# nl /etc/passwd | sed '2i i am zxhk'6、在第二到第五行每行后都追加一个i am zxhk
# nl /tmp/abc | sed '2,5a i am zxhk'
7、在第二行前追加两行i am zxhk 和 i come from china
# nl /etc/passwd | sed '2a i am zxhk\
> drink beer ?'8、将第2-5行的内容替换成为"i am zxhk"(以行为单位的替换与显示)
# nl /tmp/abc | sed '2,5c i am zxhk'9、仅列出 /etc/passwd 文件内的第 5-7 行内容
# nl /etc/passwd | sed -n '5,7p'10、搜索/etc/passwd有root关键字的行
# nl /etc/passwd | sed '/root/p'11、删除/etc/passwd所有包含root的行
# nl /etc/passwd | sed '/root/d'12、将/etc/passwd中包含root的行中的bash替换为blueshell
# nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p}'
(找到root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔)数据的搜寻并替换
sed 的搜寻与替代的与 vi 相当的类似!
格式:
sed 's/要被取代的字串/新的字串/g'
13、获取本机的ip信息,如下:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
# ifconfig eth0 | sed -n "/inet addr/{s/^[[:space:]]*//g;p}"
14、获取IP地址(后面的部分予以删除)
# ifconfig eth0 | sed -n "/inet addr/{s/^[[:space:]].*addr://;p}" | sed -n '/cast/{s/[[:space:]].*//g;p}'
# ifconfig eth0 | sed -n "/inet addr/{s/^[[:space:]].*addr://;s/[[:space:]].*//g;p}"
15、将sysctl.conf中的net.ipv4.ip_forward = 0改为116、将apache的配置文件中的#ServerName www.example.com:80行首的#去掉
# sed 's/^#\(ServerName www\)/\1/' /etc/httpd/conf/httpd.conf17、删除file.txt中的注释行和空白行
# sed -e '/#/d' -e '/^$/d' file.txt直接修改文件内容(危险动作)
18、利用 sed 将file.txt 内每一行结尾若为 . 则换成 !
# sed -i 's/\.$/\!/g' file.txt
19、利用 sed 直接在 file.txt 最后一行加入『# This is a test』
# sed -i '$a # This is a test' file.txt
注意:
$ 代表的是最后一行,a 的动作是新增,因此该文件最后新增『# This is a test』!sed 的『 -i 』选项可以直接修改文件内容,这功能非常有帮助
Author:潇湘雨错
Linux中的sed的更多相关文章
- Linux中使用sed命令或awk命令修改常规配置文件
一.方案: Linux中使用sed命令或awk命令修改常规配置文件 二.步骤: 1.假设有一个a.txt,内容如下: #!/bin/bash aa= bbb= ccc= #ddd= 2.如果想要把里面 ...
- Linux中使用sed命令替换字符串小结
sed替换的基本语法为: sed 's/原字符串/替换字符串/' 单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义,但是单引号”‘”是没有办法用反斜线”\”转义的 ...
- 【转】linux中的sed命令
转自:http://www.cnblogs.com/shineshqw/articles/1978122.html 功能说明: 利用script来处理文本文件. 语 法:sed [-hnV][-e&l ...
- Linux中的sed命令
sed - stream editor for filtering and transforming text 流编辑器的过滤和转换文本 sed [-nerf] [动作] 参数: -i 修改源文件 危 ...
- Linux中的sed解析
简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...
- 【Linux】linux中文本操作利器grep,awk,sed
grep命令 grep(global search regular expression)是一种强大的文本搜索工具,它可以使用正则表达式搜索文本,并把匹配的行打印出来.平时搜索文本中内容的时候是非常方 ...
- grep sed awk 3个Linux中对文件内容操作的命令
在学习Linux命令中,发现3个有关于文件内容操作的命令grep,sed和awk,在这里简单汇总这3个命令主要作用,在实际中找到最合适的情景应用,详细用法可以参考其他文章. 1.grep命令 主要作用 ...
- Linux中sed的用法实践
Linux中sed的用法实践 参考资料:https://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html http://www.fn139 ...
- Linux中Sed的用法
Linux中Sed的用法 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为: ...
随机推荐
- asp.net中application,cookies,stateview,session的使用
Cookie Cookie的用法也和ASP中差不多.比如我们建立一个名为aspcn,值为飞刀的cookie HttpCookie cookie = new HttpCookie["aspcn ...
- HDU4632:Palindrome subsequence(区间DP)
Problem Description In mathematics, a subsequence is a sequence that can be derived from another seq ...
- CAS Tomcat实现单点登录
转贴: http://www.cnblogs.com/ja-net/archive/2012/07/25/2608536.html 最近这两天在搞单点登录,第一次使用老出状况.以下是配置过程: 1.安 ...
- Java 判断是否为汉字 判断是否为乱码 判断字符串是否为双整型数字 整数 数字
/** * 判断是否为汉字 * * @param str * @return */ public static boolean isGBK(String str) { char[] ch ...
- MFC 学习 之 状态栏的添加
1.首先声明一个 CStatusBar m_bar;//声明对象2.然后打开视图资源 String Table中添加两个字段值 3.创建了两个字段值以后,在OnintDialog() 所在的 .cp ...
- 关于Excel Networkdays方法的实现
最近一个程序要求excel输出的日期差为Networkdays. 在网上找了下,没有找到很好的具体实现方法. 要说明的是,微软的Microsoft.Office.Interop.Excel已经实现的N ...
- 文件和目录之access函数
本篇博文内容摘自<UNIX环境高级编程>(第二版),仅作个人学习记录所用.关于本书可参考:http://www.apuebook.com/. 当用open函数打开一个文件时,内核以进程的有 ...
- c++与c不太相同的一些地方1
1.c++区别与java的一个地方:C++更多的是一种规范,不同时期的不同标准,提供了不同的语法要求.所以各个厂商在对C++的支持上也做得不尽相同,比如有些语法vs就支持gcc 就支持的差一些,而某些 ...
- 命令行界面下的用户和组管理之useradd和passwd命令的使用
命令行界面下的用户和组的管理之useradd和passwd命令的使用 useradd [-c comment] [-d dir] [-e expire] [-g group] [-G group1,g ...
- mapping 详解5(dynamic mapping)
概述 在使用 ES 的时,我们不需要事先定义好映射设置就可以直接向索引中导入文档.ES 可以自动实现每个字段的类型检测,并进行 mapping 设置,这个过程就叫动态映射(dynamic mappin ...