sed命令的使用
2015-08-04 18:34
288 查看
在shell脚本的文本处理中,sed与awk是两把利器,sed主要用于行处理。使用好会很快地进行文件的处理。
下面来看看sed的使用。
sed的使用方法如下:
实际中更常见的表示方式:
这里的flag选项有以下几个:
-n ,就是安静模式,一般在Linux中会将命令的输出全部打印出来,有时候我们只对sed处理过的结果感兴趣,这里我们需要使用这个选项,只仅仅将sed处理过的结果打印出来;
-e expression or script,将要处理的命令(expression or script)写入到程序的运行列表,此选项可以使sed支持多点编辑,使用多个expression或者script时,使用逗号隔开;
-f file,添加file中定义的命令到程序的运行列表;
-i ,直接修改读取的文件而不输出到终端;
-l N ,指定换行期望的长度N;
-r ,脚本中使用扩展正则表达式;
-s ,将输入的文件视为各个独立的文件而不是一个长得连续的输入;
-u ,从输入文件读取最少的数据,更频繁地刷新输出;
然后有关sed的script:
a ,此选项用来新增内容到指定行的后面,例如:'2a hello world',添加hello world到第二行的后面,'$a hello world‘添加hello world到最后一行的后面;
i ,此选项用来插入新的内容到制定的前面,和a类似;
c ,此选项用来替换指定行的内容为新内容,例如:'2c hello' '1,4c Hi';
d ,此选项用来删除指定行;
p ,此选项用来显示指定的行;
s ,此选项用来进行取代替换操作,可以结合正则表达式进行操作,例如 ‘1,20s/hello/shell/g’表示将1~20的hello全部替换为shell。
以上就是sed命令的参数说明,在实际的应用中可以结合正则表达式进行文本的处理。
正则表达式:
下面来看看sed的使用。
sed的使用方法如下:
sed [flag] ... {expression or script} [input_file]...
实际中更常见的表示方式:
sed [flag] 'SELECTION edit-instructions' file
这里的flag选项有以下几个:
-n ,就是安静模式,一般在Linux中会将命令的输出全部打印出来,有时候我们只对sed处理过的结果感兴趣,这里我们需要使用这个选项,只仅仅将sed处理过的结果打印出来;
-e expression or script,将要处理的命令(expression or script)写入到程序的运行列表,此选项可以使sed支持多点编辑,使用多个expression或者script时,使用逗号隔开;
-f file,添加file中定义的命令到程序的运行列表;
-i ,直接修改读取的文件而不输出到终端;
-l N ,指定换行期望的长度N;
-r ,脚本中使用扩展正则表达式;
-s ,将输入的文件视为各个独立的文件而不是一个长得连续的输入;
-u ,从输入文件读取最少的数据,更频繁地刷新输出;
然后有关sed的script:
a ,此选项用来新增内容到指定行的后面,例如:'2a hello world',添加hello world到第二行的后面,'$a hello world‘添加hello world到最后一行的后面;
i ,此选项用来插入新的内容到制定的前面,和a类似;
c ,此选项用来替换指定行的内容为新内容,例如:'2c hello' '1,4c Hi';
d ,此选项用来删除指定行;
p ,此选项用来显示指定的行;
s ,此选项用来进行取代替换操作,可以结合正则表达式进行操作,例如 ‘1,20s/hello/shell/g’表示将1~20的hello全部替换为shell。
以上就是sed命令的参数说明,在实际的应用中可以结合正则表达式进行文本的处理。
正则表达式:
元字符 | 功能 | 示例 | 匹配结果 |
^ | 行首定位符 | /^supinfo/ | 匹配所有以supinfo开头的行 |
$ | 行尾定位符 | /supinfo$/ | 匹配所有以supinfo结尾的行 |
\< | 词首定位符 | /\<supinfo/ | 匹配出现以supinfo为开头的词的行 |
\> | 词尾定位符 | /supinfo\>/ | 匹配出现以supinfo为结尾的词的行 |
. | 匹配一个字符 | /su…fo/ | 包含su,后面紧跟三个任意字符,然后紧跟着fo的行 |
* | 匹配0个或多个前一字符 | /_*supinfo/ | supinfo前有0个或多个下划线的行 |
[] | 匹配一组字符里的任意字符 | /[Ss]pinfo/ | 包含Supinfo或supinfo的行 |
[x-y] | 匹配指定范围内的字符 | /[A-Z0-9]supinfo/ | supinfo之前有一个A到Z或0到9的字符 |
[^ ] | 匹配不在指定范围内的字符 | /[^A-Z0-9]supinfo/ | supinfo之前有一个既不是A到Z又不是0到9的字符 |
x\{m\} x\{m,\} x\{m, n\} | 根据字符x出现的次数匹配: m次;大于等于m次;大于等于m次但小于等于n次 | /s\{2,5\}/ | 匹配有2到5个连续出现的s的行 |
\ | 转义元字符 | /supinfo\. / | 匹配包含supinfo,然后后面紧跟一个句点的行(没有 \ 的时候是匹配一个字符) |
\(…\) | 创建一个字符标签 | /(SUPINFO):use\1NE/ | 括号中的字符被保存在标号为1的标签里,以后可以用\1来引用。标签编号从左到右依次为1,2,3……最多可以有9个标签。这个例子查找的是SUPINFO:后面跟着一个 use SUPINFONE的字符串 |
相关文章推荐
- 多线程之Handler
- Win7使用Visual Studio 2010编译用于Qt4.8.6的MySQL驱动
- jquery实现99乘法表的动态显示
- join -- inner join ?
- hdu5344MZL's simple problem stl set
- fsocket发送post实现异步请求
- ceph存储 strace命令用法详解
- web.xml 指定配置路径
- 直到开始找工作才发现自己基础多差。现在追赶还来得及!开始行动吧!
- strlen函数实现的两种方法
- Activity Lifecycle
- Android之Adapter总结
- 【转】终极 Web 应用性能和压力测试工具 Gor
- Codeforces gym 100685 C. Cinderella 水题
- Linq List<T>.Distinct() 去除对象重复
- 【LIS】【严格递增和非严格递增】
- ubuntu命令
- 正则表达式验证日期
- android检查版本更新实现思路
- git Bash 安装&配置与基本操作