ed命令总结教程分享

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'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值