ed 命令简介

2023-12-13 09:32
文章标签 命令 简介 ed

本文主要是介绍ed 命令简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ed 命令简介:在 unix/linux 平台下,首先要学习的就是文本编辑,而 ed 编辑器是 unix/linux 操作系统下最简单、最典型
的文本编辑器,因此,学习 ed 编辑器能够帮助你很好的理解一般的文本操作,而且还可以为你以后学习 unix/linux
下的一些常用命令(如 grep,sed,...)打下基础。 ed 编辑器是以行为单位对文本进行操作的编辑器,也就是说一次仅能编辑一行,非以全屏的方式来操作,而不像 vi/vim
那样是以整个屏幕框架为单位对文本进行编辑。ed 简单、易用,也正是由于其小巧玲珑,许多文本操作者现在仍然偏爱它,
使用它。ed 编辑器可以用于创建、修改、显示文本文件。当 ed 打开一文本文件时,将复制文件的内容到 ed 命令的缓存中, 在
ed 中的所有命令操作只作用于缓存中的内容,而不会对源文件有任何影响,除非对源文件进行 w(写) 操作。 ed 有命令模式
和输入模式两种状态,类似于 vi/vim 的两种模式,ed 在命令模式下输入的是命令,这些命令用来指定对编辑文本的操作;
ed 在输入模式下输入的是文本,这些文本将依照命令模式下输入的命令被添加或替换到文本中。当第一次被调用时,ed 默
认进入命令模式,当输入 a、c 或 i 命令后即进入输入模式,在输入模式下,单行输入 '.' 然后回车,则回到命令模式。ed 调用:ed [-GVhl] [-p string] [file]注解:
file                指定将要编辑的文件(如果文件名以叹号开头 '!file',应用反斜杠引用叹号 '\!file',否则,ed 将视 file 命令的输出为编辑内容。)
-G                兼容模式
-V                输出 ed 版本信息                
-h                显示 ed 帮助信息
-l                强制退出状态为 0(即使操作中出现错误)
-p string         指定命令模式下的提示符ed 命令格式为:[address [,address]]command[parameters]地址(address,[,address]) 是用来指定命令(command)的作用范围的。如果没给出地址,则为默认地址。ed 读入文件后,当前
行默认为文件最后一行,如果文件为空,则当前行号设置为 0。命令(command) 会根据指定的地址(或默认地址)对编辑文本进行操作。当输入一非法命令,ed 将会显示一问号 '?' 来提示
输入命令错误。ed 地址:地址由下面基本的元素构成,其后也可跟加 '+'、'-'、' ' 和数字来表示自己所需要的地址。.             当前行$             文本最后一行n             文本第 n 行( n 为数字,下同;m 亦是 )-n             从文本当前行数起,向前第 n 行+n             从文本当前行数起,向后第 n 行-             相当于 -1 行地址+             相当于 +1 行地址m,n             文本的第 m 到 n 行,             文本的所有行;             文本当前行到最后一行/reg/             从文本当前行数起,下一个匹配 reg 的行?reg?             从文本当前行数起,上一个匹配 reg 的行'x             由 k 命令标记的行( x 为一小写字母 )正则表达式如下:(只涉及 ed 所支持的正则表达式).                   匹配任何单个字符。[char-class]           匹配任何一个在 char-class 里的单个字符。如果中间出现 '-' ,则意为其左边的字符和其右边的字符之间的所有字符。例如,[abc] 匹配 a 或 b 或 c;[a-z] 匹配任意一个小写字母(a、b、c、...、z),[0-9] 匹配任意一个数字(0、1、2、...、9)。char-class 也可以为一些字符集。如下:[: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'[^char-class]            匹配 [char-class] 的补集,即匹配任意一个不在 char-class 里的单个字符*                    匹配前面的子表达式零次或多次。例如,'ab*' 能匹配 "a" 以及 "abb"。 * 等价于'\{0,\}'\+                   匹配前面的子表达式一次或多次。例如,'ab\+' 能匹配 "ab" 以及 "abb",但不能匹配 "a"。\+ 等价于 \{1,\}\?                   匹配前面的子表达式零次或一次。例如,"word(s)\?" 可以匹配 "word" 或 "words" 。\? 等价于\{0,1\}\{n,m\}           m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。 "a{1,3}" 将匹配 "baaaaab" 中的前三个 a。'a{0,1}' 等价于 'a\?'。请注意在逗号和两个数之间不能有空格\{n,\}                   n 是一个非负整数。至少匹配n 次。例如,'a\{2,\}' 不能匹配 "abc" 中的 'a',但能匹配 "baaaaab"中的所有 a。'a\{1,\}' 等价于 'a\+'。'a\{0,\}' 则等价于 'a*'\{n\}                   n 是一个非负整数。匹配确定的 n 次。例如,'a\{2\}' 不能匹配 "bab" 中的 'a',但是能匹配 "baab"中的两个 a^                   匹配输入字符串的开始位置$                   匹配输入字符串的结束位置\<                   匹配一个单词的前边界。例如,'\<el' 匹配 "element",但不能匹配 "help"\>                   匹配一个单词的后边界。例如,'ly\>' 匹配 "lovely",但不匹配 "lying"\b                   匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配"verb" 中的 'er'\B                   匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'\w                   匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'\W                   匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'\`                   匹配一个句子的边界\(\)                   定义向后引用。'\n'(n为一正整数)代表第 n 个括号中匹配的字符串ed 命令:
ed 命令都是单个字符,其中一些命令有一些选项。如果一命令超过一行,应使 '\' 结束每一行。
命令如下:(括号内为默认地址)(.)a            切换到输入模式,将新输入的文本追加到指定行的后面,当前行被设为输入文本的最后一行(.)i            切换到输入模式,将新输入的文本插入到指定行的前面,当前行被设为输入文本的最后一行(.,.)c          切换到输入模式,将新输入的文本替换成指定行,当前行被设为输入文本的最后一行(.,.)d          删除指定行,如果被删除的文本后还有文本行,则当前行被设为该行,否则设为被删除的文本的上一行(.+1)          无命令时,默认 p 命令,但打印下一行内容,当前行被设为打印行(.+1)zn        一次跳动 n 行,如果未指出 n ,默认当前终端屏幕大小,当前行被设为最后被打印的行(.,.)p         打印指定行,当前行被设为打印行的最后一行P               ed 命令模式下提示符开关命令,默认提示符为 '*'(.,.)l          在每行最后加一 '$' 符号指定结尾,并打印输出(.,.)n         打印指定行号和内容,行号与行内容用制表符分割,当前行被设为打印行的最后一行($)=           打印指定行行号(.,.)#         注释行,将被忽略(.)k char      用一小写字母标记指定行(.,.)s/reg/replacement/
(.,.)s/reg/replacement/g
(.,.)s/reg/replacement/n替换指定行命令(.,.)s                   重复上一次替换命令,当前行被设为最后一个被改变的行(1,$)g/reg/cmd-list     所有匹配 '/reg/' 的行执行 cmd-list 命令,在命令执行前,当前行被设为匹配行。当所有匹配行执行完命令后,当前行被设定为最后一个匹配行。cmd-list 中每一行只能有一个命令,但有多个命令时,应以 '\' 结束每一行(1,$)G/reg/              与 g/reg/cmd-list 相似,但匹配的每一行所执行的命令由用户各个定义。(1,$)v/reg/cmd-list      与 g/reg/cmd-list 相反,指不匹配行(1,$)V/reg/              与 G/reg/ 相反,指不匹配行(.,.+1)j                          合并指定行内容,当前行被设为合并行(.,.)m(.)                移动左边源指定行到右边目的指定行后,当前行被设为移动行的最后一行(.,.)t(.)                 复制左边源指定行到右边目的指定行后,当前行被设为复制行的最后一行(.,.)y                   复制指定行到缓存,当前行不改变(.)x                     复制缓存内容到指定行后,当前行被设为复制行的最后一行u                        撤销上一次命令,当前地址被设为上一次地址h                        打印最后一个错误说明H                        错误说明开关,默认不输出e file                    编辑文件并设定文件名E file                    强制编辑文件,同 e file,但丢失以前的修改,不做警告!cmd                    执行 shell 命令 cmde !cmd                  先将ed 缓冲区清除,替换 cmd 命令的输出f file                    设置文件名,如果每给出 file 参数,则打印文件名($)r file                 把指定文件内容追加到指定行后,当前行被设为追加文本的最后一行($)r !cmd               把命令的输出追加到指定行后,当前行被设为追加文本的最后一行(1,$)w file               保存指定文本内容到指定文件(覆盖保存)(1,$)W file              保存指定文本内容到指定文件(追加保存),当前行不改变(1,$)w !cmd            输出指定文本内容到 cmd 的标准输入,当前行不改变(1,$)wq flie             保存指定文本内容到指定文件(覆盖保存),并退出编辑器q                  退出 ed 编辑器,退出前若所作的修改没保存,发出警告Q                  强制退出 ed 编辑器,同 q 命令,但退出前若所作的修改没保存,不警告P                  ed 命令提示符显示开关。 '*' 为 ed 默认提示符,利用 ed 命令 -p 选项,其可被更改为任意字符更为详细之处请参阅 man info 手册
复制代码

这篇关于ed 命令简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/487951

相关文章

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

【Tools】AutoML简介

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 AutoML(自动机器学习)是一种使用机器学习技术来自动化机器学习任务的方法。在大模型中的AutoML是指在大型数据集上使用自动化机器学习技术进行模型训练和优化。

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者

linux 判断某个命令是否安装

linux 判断某个命令是否安装 if ! [ -x "$(command -v git)" ]; thenecho 'Error: git is not installed.' >&2exit 1fi

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

Linux命令(4):fg与bg命令

fg、bg、jobs、&、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的 一.& 最经常被用到 这个用在一个命令的最后,可以把这个命令放到后台执行 二.ctrl + z 可以将一个正在前台执行的命令放到后台,并且暂停 三.jobs 查看当前有多少在后台运行的命令 四.fg 将后台中的命令调至前台继续运行 如果后台中有多个命令,可以