文章目录
sed命令的定义
原来的内容是在磁盘当中放着,现在用sed命令处理的时候将内容掉入内存的一个地方用户处理,这个处理空间也叫模式空间.
sed命令可以处理文件中的数据或者用户输入的数据。
sed命令比交互式的编辑器快很多。
sed命令选项
语法及动作说明
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数说明:
-e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
-f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-h或--help 显示帮助。
-n或--quiet或--silent 仅显示script处理后的结果。
-V或--version 显示版本信息。
动作说明
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何东西;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
几种调用sed的方式
在命令行调用sed
-e在一个命令行调用多个编辑器
中间用分号割开
sed命令只是改变了输出内容,没有改变文件内容
-f 在文件中调用编辑器
s替换命令
sed 's/要被取代的字串/新的字串
脚本替换中的几个替换标记
默认情况下只能替换一行中的第一个匹配的
g 替换文本中每处匹配模式
数字(例如2)
只替换每行第2次出现的匹配模式
p 结合-n 只输出被命令修改过的行
w 将输出保存在文件中(包含操作替换的行)
替换字符
\ ! # 都可对特殊符号进行转义,习惯用哪个就用哪个
(1)
(2) !
(3) #
行寻址
如果想让命令只作用在指定的行
组合命令
正则表达式
某行开始到结尾的所有行
删除行
没有改变源文件的内容,只是删除了输出内容
删除第三行数据
删除第二三行
删除第三行到结尾
删除第一行数
与正则表达式结合
插入数据(i,a)
i 在指定行前插入新的行
a在指定行后追加新的行
对文件的指定行插入
将新行插入在多行数据流末尾
在第一行之前插入多行数据
修改某行的数据©
一次改变好几个,而不是一个一个去改变.
替换命令(y)
唯一一个可以处理单个字符的sed命令
y 替换单个字符
它会替换转换命令要求替换的所有实例,不会考虑它们出现的位置
打印行 p
打印行号 ‘=’
sed和文件一起工作
w 向文件中写入指定行
r 从文件中读取
将一个独立的文件插入到一个数据流中。
对源文件进行替换
如果需要对源文件进行替换,则加入-i参数即可
-i 表示操作在源文件上生效.否则操作内存中数据,并不写入文件中.
几个小练习
1.
2.
3.
4.
-n:取消默认输出。注意:sed命令会默认把输入行打印到屏幕上,所以如果想精准的控制输出,就需要-n。