mirror of
https://github.com/beyondx/Notes.git
synced 2026-02-04 10:54:00 +08:00
85 lines
5.2 KiB
Plaintext
85 lines
5.2 KiB
Plaintext
Content-Type: text/x-zim-wiki
|
||
Wiki-Format: zim 0.4
|
||
Creation-Date: 2011-04-07T15:50:46+08:00
|
||
|
||
====== ed ======
|
||
Created Thursday 07 April 2011
|
||
|
||
ed是unix系统的标准编辑器,最初由Ken Thompson 编写,起源与qed。
|
||
ed为匹配模式提供了正则表达式,基于ed的正则表达式渗透到了整个UNIX系统:grep和sed使用的正则表达式几乎与ed相同
|
||
egrep,awk,ex扩展了ed的正则表达式;shell的文件名匹配语法虽然与正则表达式不同,但基本思想是相同的。
|
||
ed提供命令来操纵连续的行和与模式匹配的行,并在这些行上进行修改。
|
||
每个ed命令都是但字符,多数命令前面可以加一到两个行号,否则使用缺省的行号。行号的说明可以用其在文件中的绝对位置指定,
|
||
其他特殊的行号有:$代表最后一行,.表示当前行,或采用正则表达式搜索到的下一行,以及所有这些行号的组合。
|
||
行号可以与+-符号组合起来使用,当单独使用+-时是相对与当前行的。
|
||
用**单独的逗号**表示行号行时,其含义是整个文档。
|
||
ed能记住上次使用的模式,所以可以用//或??来重复搜索,且模式搜索都会回绕。
|
||
ed记录了最后操作所在的行:如最后显示的行,添加文本或修改文本或读一个文件后新内容的最后一行,这一行用.标记,成为当前行。
|
||
每个命令都可以对.有一个定义,通常是将其设置为该命令影响的最后一行。
|
||
替换命令s用于将某个字符串替换为另一个字符串,除非跟着命令g,否着只有行中最左边出现的模式被替换。s命令本身并不显示被修改的行,
|
||
除非在后面使用p,事实上大多数的ed命令都实在默默的工作,但几乎任何命令后都可以用p显示命令影响后行的结果。
|
||
可以用u命令取消最进的替换,但.必须设置为被替换的行。
|
||
当在ed中的某些字符出现在一个搜索模式或s命令的左边时,也具有特殊含义,这些字符被称为元字符,而使用它们的模式被称为正则表达式。
|
||
包含*的正则表达式匹配最左边最长的串。
|
||
全局命令g和v适合有正则表达式选择的多行的一个或多个其它命令,g命令最常用于多行的显示,替换或删除。
|
||
m.ng/regrep/command
|
||
m,nv/regrep/commands
|
||
gv命令前可以冠以行号来限定范围,缺省为1,$
|
||
|
||
g/.../命令 对所有匹配正则表达式的行执行命令。
|
||
m,n m d 把第m行到n行的内容移到地d行之后
|
||
m,n t d
|
||
用于移动和复制的命令的m、d命令的目标行不能落在m~n-1之内,如果没有指定源文本行,这默认使用当前行。
|
||
命令=显示最后一行的行号, .= 显示当前行号,显示后当前行不改变。
|
||
k命令用于标记行,标记适合用于文本的大块移动。
|
||
行可以通过j命令连接起来(没有附加的空格)。
|
||
nr filename 读文件,并将其添加到行n后,把当前行设置为读取 内容的最后一行
|
||
m,nw filename 把行m到n的内容写到文件中,不改变当前行
|
||
m,n W filename 。。。。。添加到。。。。。
|
||
w,W命令的缺省范围是整个文件,r是最后一行。
|
||
ed记得使用的第一个文件名,该名可以用命令行中取得,或者用r或w命令取得,命令f显示或改变被记住的文件名。
|
||
f 显示被记住的文件名
|
||
f filename 设置被记住的文件名。
|
||
命令e用记住的文件或新的文件来重新设置ed
|
||
e 开始重新编辑被记住的文件
|
||
e filename 开始编辑文件
|
||
e命令的保护方式同q命令,如果缓冲区没有被保存,第一次e将引起一个错误信息。
|
||
|
||
命令一览表
|
||
|
||
命令 含义
|
||
.a 增加文本,自导一个只包含.的行为止
|
||
.,.c 改变行,新文本的结束方式同a
|
||
.,.d 删除行
|
||
e filename 用文件重新初始化ed,若filename省略则ed用记住的文件名初始化
|
||
f filename 设置记忆文件
|
||
1,$g/正则表达式/命令 对每个匹配正则表达式的行执行命令
|
||
.i 在行前插入文本,结束方式同a
|
||
.,.+1j 把多行连成一行
|
||
.kc 用字母c设置行biaoji
|
||
.,.l 显示行,把不可见字符标记为可见
|
||
.,.m 行号 把当前行移到指定行后
|
||
.,.p 显示行
|
||
P 在以后的命令模式下显示提示符星号
|
||
q 退出,若缓冲区为修改则给出?提示,再一次q时立即退出,Q 为不保存改变而退出,
|
||
$r filename 读文件
|
||
.,.s/正则表达式/新表达式字符串/ 把任何与正则表达式匹配的内容替换为新表达式
|
||
.,.t 行号 把当前行复制到指定的行后
|
||
.u 取消行中的上一次改变
|
||
1,$v/正则表达式/命令 在每个不语正则表达式匹配的行上执行命令
|
||
1,$w filename 把所有行写到文件中,W为添加到文件末尾
|
||
x 进入加密模式
|
||
!command-line 执行命令,而不退出ed
|
||
(.+1) 回车 显示下一行内容
|
||
n 显示绝对行号的内容,n=0,1,2...
|
||
. 当前行行号,或显示当前行的内容
|
||
$ 最后一行行号或显示最后一行内容
|
||
/正则表达式/ 与正则表达式匹配的下一行,当在$时回绕的奥第一行开始
|
||
?正则表达式? 与上相反
|
||
`c 跳到标记为c的行
|
||
n1+n2 跳到n1+n2的行
|
||
N1,N2 行N1到N2
|
||
N1;N2 把当前行设为N1,然后跳到N2
|
||
|
||
|