ed
两个模式:文本输入模式,命令模式
1. 输入一个英文句号 . 然后按enter ,使得进入命令模式
2. 输入a c i进入追加、修改、插入文本模式
(addr,addr)an
3. d 删除
2,3d #将第2到3行删除
4. (addr,addr)[p][l][n] 打印指定行、打印结尾符、打印行号
.= 打印当前行号
5. (addr)k char 用一小写字母char标记指定行
6. u 撤销上一次命令,当前地址被设为上一次地址
7. h 打印最后一个错误说明
8. H 错误说明开关,默认不输出
9. e file 编辑文件并设定文件名
e !cmd 先将ed 缓冲区清除,替换 cmd 命令的输出
10. E file 强制打开文件,同 e file,丢失以前的修改不做警告
11. (addr,addr)j 合并指定行内容,当前行被设为合并行
(addr,addr)m(addr) 移动左边源指定行到右边目的指定行后
(addr,addr)t(addr) 复制左边源指定行到右边目的指定行后
2t0 #复制第2行文本到第0行,亦即第一行前
2,4m5 #将第2到4行文本内容移到第5行后
12. f file 设置文件名
13. r file 把指定文件内容追加到指定行后
r !cal #将 shell 命令 cal 的输出添加到当前行后
r !cmd 把命令的输出追加到指定行后
14. w file 保存指定文本内容到指定文件
(addr,addr)w !cmd 输出指定文本内容到 cmd 的标准输入
15. q 退出 ed 编辑器,退出前若所作的修改没保存,发出警告
Q 强制退出 ed 编辑器,同 q 命令,但退出前若所作的修改没保存,不警告
P 命令模式下提示符开关命令
16. 替换命令
开头出现的g用来搜索含有某模式的行,s用来在定位的行当中进行替换处理操作
开头出现的g用来搜索含有某模式的行,再用a或者i之类的命令对定位的行进行处理
g/changed/n #打印含有“changed”的行号和行内容
2s/second/2th/
,s/this is // #将所有行中第一个“this is ”替换为“”,即删除
1,$s/tmp/ttt/ #将每一行第一个tmp换成ttt
s/tmp/ttt/g 将当前行所有的tmp换成ttt
(1,$)g/reg/cmd-list 所有匹配行执行 cmd-list 命令,
cmd-list 中每一行只能有一个命令,多个命令时以 '/' 结束每一行
(1,$)v/reg/cmd-list 与 g/reg/cmd-list 相反,指不匹配行
例如,1,$g/Sun/an/
addnewtext/
another line
.
#以上'/'用于连接各行,完成对每一匹配的行进行an命令操作
(1,$)G/reg/ 与 g/reg/cmd-list 相似,但匹配的每一行所执行的命令由用户各个定义。
(1,$)V/reg/ 与 G/reg/ 相反,指不匹配行
17. !cmd 执行 shell 命令 cmd
!sh 进入一个shell ctrl-d返回
ed的一个参数:
-p String 将参数 String 设为编辑器的提示符。String 的缺省值是空值(无提示符)。
定位行的方法:
. 当前行
$ 文本最后一行
n 文本第 n 行( n 为数字,下同;m 亦是 )--允许是0!
-n 从文本当前行数起,向前第 n 行
+n 从文本当前行数起,向后第 n 行
- 相当于 -1 行地址
+ 相当于 +1 行地址
++
m,n 文本的第 m 到 n 行
, 文本的所有行
; 文本当前行到最后一行
/reg/ 从文本当前行数起,下一个匹配 reg 的行
?reg? 从文本当前行数起,上一个匹配 reg 的行
'x 由 k 命令标记的行( x 为一小写字母 )
正则表达式符号:
. 匹配任何单个字符。except the new-line character.
* (asterisk) 匹配前面的子表达式零次或多次。例如,'ab*' 能匹配 "a" 以及 "abb"
[String] 匹配任何一个在 String 里的单个字符
举例:[^String] [a-f]
^ 匹配输入字符串的开始位置
$ 匹配输入字符串的结束位置
/{m/}
m次
/{m,/}
至少m次
/{m,n/}
m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次
例如,'a/{2,/}'
/(Pattern/) 子模式 与 /Number 子模式引用的用法举例: /(A/)/(B/)C/2/1 #意思是: ABCBA.
空模式,//(两个斜杠),是重复上一个模式。
字符集定义,两边的括号是定义的一部分:
[:alpha:] 相当于 [a-zA-Z]
[:lower:] 相当于 [a-z]
[:upper:] 相当于 [A-Z]
[:digit:] 相当于 [0-9]
[:alnum:] 相当于 [a-zA-Z0-9]
[:blank:] 匹配 ' '(空格)、 '/t'(制表符)
[:space:] 匹配 ' '(空格)、'/t'(制表符)、'/n'(新行)、'/f'()、'/v'(垂直制表符)、'/r'(回车符)
[:cntrl:] 匹配控制字符。在 ASCII 码中,这些控制字符是从八进制数字 000 到 037, 和 177 (DEL)
[:print:] 匹配 相当于 [:alnum:]、[:punct:] 和 空格
[:graph:] 匹配 相当于 [:alnum:] 、 [:punct:]
[:punct:] 匹配 `! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ / ] ^ _ ` { | } ~ ' 等标点符号
[:xdigit:] 匹配十六进制字符 '0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f'

2万+

被折叠的 条评论
为什么被折叠?



