sed命令的使用

在shell脚本的文本处理中,sed与awk是两把利器,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为结尾的词的行
 
.
匹配一个字符
/sufo/
包含su,后面紧跟三个任意字符,然后紧跟着fo的行
 
*
匹配0个或多个前一字符
/_*supinfo/
supinfo前有0个或多个下划线的行
 
[]
匹配一组字符里的任意字符
 
/[Ss]pinfo/
包含Supinfosupinfo的行
[x-y]
匹配指定范围内的字符
/[A-Z0-9]supinfo/
supinfo之前有一个AZ09的字符
 
[^ ]
匹配不在指定范围内的字符
/[^A-Z0-9]supinfo/
supinfo之前有一个既不是AZ又不是09的字符
 
x\{m\}
x\{m,\}
x\{mn\}
根据字符x出现的次数匹配:
m次;大于等于m次;大于等于m次但小于等于n
 
/s\{2,5\}/
匹配有25个连续出现的s的行
\
转义元字符
/supinfo\. /
匹配包含supinfo,然后后面紧跟一个句点的行(没有 的时候是匹配一个字符)
 
\(\)
创建一个字符标签
/(SUPINFO):use\1NE/
括号中的字符被保存在标号为1的标签里,以后可以用\1来引用。标签编号从左到右依次为123……最多可以有9个标签。这个例子查找的是SUPINFO:后面跟着一个 use SUPINFONE的字符串


你可能感兴趣的:(sed命令的使用)