轻松学会文本处理工具之二 linux sed命令
linux  /  管理员 发布于 7年前   200
sed:Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器。能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上。还可以对原文件改动,但是不会再屏幕上返回结果。
sed命令的语法格式:
sed的命令格式: sed [option] 'sed command'filename
sed的脚本格式:sed [option] -f 'sed script'filename
sed命令的选项(option):
-n :只打印模式匹配的行
-e :直接在命令行模式上进行sed动作编辑,此为默认选项
-f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作
-r :支持扩展表达式
-i :直接修改文件内容
sed在文件中查询文本的方式:
1)使用行号,可以是一个简单数字,或是一个行号范围
x | x为行号 |
x,y | 表示行号从x到y |
/pattern | 查询包含模式的行 |
/pattern /pattern | 查询包含两个模式的行 |
pattern/,x | 在给定行号上查询包含模式的行 |
x,/pattern/ | 通过行号和模式查询匹配的行 |
x,y! | 查询不包含指定行号x和y的行 |
2)使用正则表达式、扩展正则表达式(必须结合-r选项)
^ | 锚点行首的符合条件的内容,用法格式"^pattern" |
$ | 锚点行首的符合条件的内容,用法格式"pattern$" |
^$ | 空白行 |
. | 匹配任意单个字符 |
* | 匹配紧挨在前面的字符任意次(0,1,多次) |
.* | 匹配任意长度的任意字符 |
\? | 匹配紧挨在前面的字符0次或1次 |
\{m,n\} | 匹配其前面的字符至少m次,至多n次 |
\{m,\} | 匹配其前面的字符至少m次 |
\{m\} | 精确匹配前面的m次\{0,n\}:0到n次 |
\< | 锚点词首----相当于 \b,用法格式:\<pattern |
\> | 锚点词尾,用法格式:\>pattern |
\<pattern\> | 单词锚点 |
\(\) | 分组,用法格式:\(pattern\),引用\1,\2 |
[] | 匹配指定范围内的任意单个字符 |
[^] | 匹配指定范围外的任意单个字符 |
[:digit:] | 所有数字, 相当于0-9, [0-9]---> [[:digit:]] |
[:lower:] | 所有的小写字母 |
[:upper:] | 所有的大写字母 |
[:alpha:] | 所有的字母 |
[:alnum:] | 相当于0-9a-zA-Z |
[:space:] | 空白字符 |
[:punct:] | 所有标点符号 |
复制代码代码如下:
#######sed的匹配模式支持正则表达式#####################
sed'5 q'/etc/passwd#打印前5行
sed-n '/r*t/p'/etc/passwd#打印匹配r有0个或者多个,后接一个t字符的行
sed-n '/.r.*/p'/etc/passwd#打印匹配有r的行并且r后面跟任意字符
sed-n '/o*/p'/etc/passwd#打印o字符重复任意次
sed-n '/o\{1,\}/p'/etc/passwd#打印o字重复出现一次以上
sed-n '/o\{1,3\}/p'/etc/passwd#打印o字重复出现一次到三次之间以上
sed的编辑命令(sed command):