sed命令:基础学习
sed:流编辑器,用来把文档里面的文字经过一系列编辑命令转换为另一种格式输出;通常用来匹配一个或多个正则表达式的文本进行处理。
重要:sed编辑器自身不会修改文本文件中的数据,它只是将修改后的哦数据发送到STDOUT。
使用sed的帮助手册:
- man sed | less
- info sed
- sed --help | less
1.sed命令行常用选项
-i 将sed处理结果直接插入到文件中
-f 按照指定sed脚本里的命令来进行处理
-r 在脚本中使用扩展正则表达式
-n 去掉自动打印模式空间
2.sed常用命令
a \ 在当前行的后面追加一行文本
i \ 在当前行的前面插入一行文本
c \ 用新的文本改变当前行的文本
d 从匹配模式的位置删除行
D 删除首行
p 打印匹配模式的行
w 写入文件
s/re/string 替换字符串
= 打印当前行号码
3.关于sed行寻址
sed流编辑器默认将使用的命令作用于文本数据的所有行。当然,如果想将命令作用于某些行,这就要使用行寻址。
行寻址有两种:
- 数字方式的行寻址
- 文本模式过滤方式的行寻址
3.1数字方式的行寻址
- 起始行号 sed -n ‘1p' file
- 结尾行号 sed -n '$p' file
- 指定单个行号 sed -n '3p' file
- 指定行号范围 sed -n '2,3p' file
3.2文本模式过滤方式的行寻址
语法格式:sed ’/pattern/command‘ file
4.sed基础实例
4.1文本替换 s
使用命令s可以进行文本替换,语法如下:
s/regexp/replacement/
sed主要有4种可用的替换标记,其作用为:让替换命令对一行中不同地方出现的文本都起作用,在替换命令字符串之后进行设置。
sed ’s/string/test/2' file 替换第二处模式匹配的地方
sed ‘s/string/test/g’ file 替换file中所有模式匹配的地方
sed -n ‘s/string/test/p’ file 打印指定模式匹配的行
sed ‘s/string/test/w newfile' file 将替换的文本写入到新文件中
4.2删除行 d
使用命令d可以进行删除行操作。
sed ’5d' file 删除文件第5行
sed ‘5,8d’ file 删除文件第5到第8行
sed ‘5,$d' file 删除文件第5行到结尾
sed ’/test/d‘ file 删除匹配test的行
4.3插入文本 i \
使用命令i \可以在指定地址前插入一行。
sed ’2i\string' file 在第2行前插入新行string
sed ‘/test/i\string' file 在匹配test出现的行前插入新行string
4.4追加文本 a \
使用命令a \可以在指定地址后追加一行。
sed ’2a\string' file 在第2行后追加新行string
sed ‘/test/a\string' file 在匹配test出现的地址后追加新行string
4.5修改行 c \
使用命令c \可以修改数据流中整行文本的内容。
sed ’5c\This is line number 5.' file 修改数据流第5行内容为This is line number 5.
sed '/string/c\test' file 修改匹配string出现的行为test
4.6转换命令 y
语法: y/source/dest/
sed ‘y/123/456/' file
4.7文本打印 p
小写p打印文本行 sed ’3p‘ file
等号(=)打印行号 sed ’=‘ file
小写l用来列出数据流中的文本和不可打印的ASCII字符
4.8写入文件 w
使用命令w可以用来向文件写入行。
sed ’3,8w newfile' oldfile
sed '/test/w newfile' oldfile
4.9读取文件 r
使用命令r可以将一个独立文件中的数据都插入到数据流中。
sed '$r file2' file1 将file2中的所有文本都插入到file1的末尾。