⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000019.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 5 页
字号:
&nbsp;&nbsp;expect还支持许多更复杂的进程控制方式,如fork,disconnect等等,你可以从手册&nbsp;<BR>页面中得到详细的信息。另外,各种tcl运算符和流程控制命令,包括tcl函数也可以使&nbsp;<BR>用。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;有些读者可能会问,如果expect执行的话是否控制台输入不能使用了,答案是否定的&nbsp;<BR>。expect命令运行时,如果某个等待的信息没有得到,那么程序会阻塞在相应的expect&nbsp;<BR>语句处,这时,你在键盘上输入的东西仍然可以正常地传递到程序中去,其实对于那些&nbsp;<BR>expect处理的信息,原则上你输入的内容仍然有效,只是expect的反映太快,总是抢在&nbsp;<BR>你的前面“输入”就是了。知道了这一点之后,你就可能写一个expect脚本,让expect&nbsp;<BR>自动处理来自fscki的那些恶心的yes/no选项(我们介绍过,这些yes/no其实完全是多余&nbsp;<BR>的,正常情况下你除了选择yes之外什么也干不了)。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;缺省下,expect在标准输出(你的终端上)输出所有来自应用程序的回应信息,你可&nbsp;<BR>以用下面的两个命令重定向这些信息:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;log_file&nbsp;[文件名]&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;这个命令让expect在你设置的文件中记录输出信息。必须注意,这个选项并不影响控&nbsp;<BR>制台输出信息,不过如果你通过crond设置expect脚本在半夜运行的话,你就确实可能需&nbsp;<BR>要这个命令来记录各种信息了。例如:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;log_file&nbsp;expect.log&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;log_user&nbsp;0/1&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;这个选项设置是否显示输出信息,设置为1时是缺省值,为0&nbsp;的话,expect将不产生任&nbsp;<BR>何输出信息,或者说简单地过滤掉控制台输出。必须记住,如果你用log_user&nbsp;0关闭了&nbsp;<BR>控制台输出,那么你同时也就关闭了对记录文件的输出。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;这一点很让人困扰,如果你确实想要记录expect的输出却不想让它在控制台上制造垃&nbsp;<BR>圾的话,你可以简单地把expect的输出重定向到/dev/null:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;./test.exp&nbsp;&gt;&nbsp;/dev/null&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;你可以象下面这样使用一对fork和disconnect命令。expect的disconnect命令将使得&nbsp;<BR>相应的进程到后台执行,输入和输出被重定向到/dev/null:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;if&nbsp;[fork]!=0&nbsp;exit&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;disconnect&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;fork命令会产生出一个子进程,而且它产生返回值,如果返回的是0,说明这是一个子&nbsp;<BR>进程,如果不为0,那么是父进程。因此,执行了fork命令之后,父进程死亡而子进程被&nbsp;<BR>disconnect命令放到后台执行。注意disconnect命令只能对子进程使用。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;11.2&nbsp;awk和文件的处理&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;UNIX里面充斥着各种记录文件和类似的东西。对文本文件的处理是系统管理员每天重&nbsp;<BR>要的工作,例如从系统记录中查找重要的内容,或者对某种程序的输出进行统计等等。&nbsp;<BR>我们将介绍常用的一个处理程序,即gawk。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;11.2.1&nbsp;grep和正则表达式&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;让我们首先从grep命令开始。这个命令大家应该很熟悉了,它用来在文件中查找一个&nbsp;<BR>字符串。不过,实际上,grep的处理功能要强大和复杂的多。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;grep&nbsp;命令的语法是&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;grep&nbsp;[模式]&nbsp;[文件名]&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;如果没有给出文件名,就缺省使用标准输入。grep每次读取一行,并且和给出的模式&nbsp;<BR>进行匹配,如果成功就把这一行会显,例如:(粗体的是我们输入的内容)&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;$&nbsp;grep&nbsp;test&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;close&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;test&nbsp;my&nbsp;hand&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;test&nbsp;my&nbsp;hand&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;grep的“模式”也称为正则表达式,可以由各种基本的正则表达式元素构成。正则表&nbsp;<BR>达式元素主要包括下面几种:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;字符串&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;匹配任何字符串,例如grep&nbsp;test表示在标准输入中1&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;[...]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;封闭集中匹配一个字符,如:[abcde]可以匹配a,b,c,d,e&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;[^...]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;求补集中匹配一个字符,例如[^ABC]匹配&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;匹配任意字符&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;\s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;空白符&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;\S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;非空白符&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;\d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数字&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;\D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;非数字&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;\w&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;字母或数字&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;\W&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;非字母和数字&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;匹配任何字符&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;上面的形式是grep中使用的基本正则表达式,另外,还可以使用egrep,egrep是grep&nbsp;<BR>的一个扩展版本,支持下面这些扩展的正则字符串:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;^&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;匹配一行的开始&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;$&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;匹配一行的结尾&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;(&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;确定正则表达式求值顺序,和正常演算中的括号意思差不多。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;(...|...|...)&nbsp;&nbsp;或,可选项之一进行匹配,例如:(abc|dev|ghi)可以匹配abc,dev,gh&nbsp;<BR>i,而(ww|gg)do可以匹配wwdo或者ggdo。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一次或多次模式&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如:aba+匹配aba,abaa...不匹配ab&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;通常,我们有两种方法使用grep和egrep,一种是使用管道,例如我们应该熟悉的ps&nbsp;&nbsp;<BR>ax&nbsp;|grep&nbsp;sendmail,另一种是直接在文件中搜索对应的字符串。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;grep/egrep还可以在命令行使用开关,常用的开关包括:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;-b&nbsp;在行前加上块号&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;-c&nbsp;统计匹配行的个数&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;-n&nbsp;在行前加上行号&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;-w&nbsp;将模式解释为字符串,所有正则表达式的控制命令失效&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;-x&nbsp;精确匹配&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;-r&nbsp;查询文件时包含子目录&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;举个例子来说,我们想在/var/log/httpd/access_log中查询所有不是来自本地(192&nbsp;<BR>.168.0.1)的请求记录,可以执行:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;grep&nbsp;–v&nbsp;&quot;^192.168.0.1&quot;&nbsp;/var/log/httpd/access_log&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;^用来让grep&nbsp;只在行首匹配。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;在grep查询的时候可以使用通配符代表多个文件,例如,grep&nbsp;start&nbsp;*&nbsp;-r将在当前目&nbsp;<BR>录以及所有子目录的所有文件中查询start字符串。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;11.2.2&nbsp;gawk的使用方法&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;gawk是awk的一个实现,awk是一种用来处理报告等文本文件的脚本语言。不过,我们&nbsp;<BR>介绍这个产品的主要目标是用它来处理各种程序的记账文件。对于复杂的脚本,还是用&nbsp;<BR>Perl比较合适。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;gawk&nbsp;的主要功能是针对档案的每一行搜寻指定的&nbsp;模式。,每当找到一个匹配的模式&nbsp;<BR>,gawk就会去执行你设定的动作。按照这个方式,&nbsp;gawk&nbsp;依此方式处理输入档案的每一&nbsp;<BR>行直到输入档案结束。如果对于某个模式没有设置对应的动作,gawk将直接将这个行显&nbsp;<BR>示出来。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;为了使用gawk,你通常必须先写一个awk脚本,除非模式/动作非常简单,可以在一行&nbsp;<BR>上完成。我们用一个例子来解释gawk的基本用法,首先产生一个目录列表文件:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;ls&nbsp;–l&nbsp;/etc&nbsp;&gt;&nbsp;list&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;现在list的内容有点像这样:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;total&nbsp;2164&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;drwxr-xr-x&nbsp;&nbsp;&nbsp;3&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4096&nbsp;Feb&nbsp;15&nbsp;22:55&nbsp;CORBA&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;-rw-r--r--&nbsp;&nbsp;&nbsp;1&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2045&nbsp;Sep&nbsp;24&nbsp;&nbsp;1999&nbsp;DIR_COLORS&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;-rw-r--r--&nbsp;&nbsp;&nbsp;1&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;17&nbsp;Mar&nbsp;25&nbsp;19:59&nbsp;HOSTNAME&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;…………&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;现在我们选择一个最简单的例子,简单地查找所有属性是drwxr-xr-x的目录文件:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;gawk&nbsp;'/drwxr-xr-x/&nbsp;{print&nbsp;$0}'&nbsp;list&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;将输出所有这样的目录。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;这个例子看上去没有什么实际用处,因为用grep也可以做同样的动作,那么我们可以&nbsp;<BR>看一看下面这个功能:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;$&nbsp;gawk&nbsp;'$1==&quot;-rwxr-xr-x&quot;&nbsp;&nbsp;{sum=sum+$5}&nbsp;END&nbsp;{print&nbsp;sum}'&nbsp;list&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;15041&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;这个是什么意思?对于所有属性是755的文件,让gawk对第五栏的数字求和。第五栏我&nbsp;<BR>们可以看到就是文件的长度,因此这个命令将显示所有属性为755的文件的总共的长度。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;$n是gawk中非常重要的概念,它用来表示文本串的分栏。缺省的情况下,gawk将输入&nbsp;<BR>字符串(从文件中读入的每一行)按照分割的空格分成若干个字段,每个字段作为一个&nbsp;<BR>变量,例如有一行&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;my&nbsp;name&nbsp;is&nbsp;3th&nbsp;test&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;那么,在awk读入这一行之后,就产生了$1到$5变量,其中$1=&quot;my&quot;,$2=&quot;is&quot;,………&nbsp;<BR>,最后$5=&quot;test&quot;。另外还有一个特殊的变量$0,它表示整个输入行,也就是这个字符串&nbsp;<BR>&quot;my&nbsp;name&nbsp;is&nbsp;test&quot;。另外还有一个特殊的变量NF,它表示当前行的字段的个数,在现在&nbsp;<BR>的情况下,NF应该等于5。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;在某些特殊的情况下,你可能需要改变分割符的定义,这可以通过对FS赋值来完成,&nbsp;<BR>例如FS=&quot;,&quot;将分割符定义为都号而不是缺省的空格。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;在一般情况下,gawk可以从命令文件中获得模式/动作,命令文件的格式很简单,就是&nbsp;<BR>直接将应该写在命令行上的模式/动作对写在文件里面,每个对构成一行,模式可以有两&nbsp;<BR>种,一种是模式匹配,也就是我们在前面解释的正则表达式,如果使用正则表达式,那&nbsp;<BR>么需要用两个/把它们夹在一起,例如/[A-Z]/表示正则表达式[A-Z]。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;另一种模式是比较指令,比较指令可以用比较操作符和逻辑运算符来构成,常用的比&nbsp;<BR>较操作符有:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;==&nbsp;&nbsp;等于&nbsp;&nbsp;&lt;=&nbsp;不大于&nbsp;&nbsp;~&nbsp;按照正则表达式匹配&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&lt;&nbsp;&nbsp;小于&nbsp;&nbsp;&gt;=&nbsp;不小于&nbsp;&nbsp;!~&nbsp;按照正则表达式不匹配&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&gt;&nbsp;&nbsp;大于&nbsp;&nbsp;!=&nbsp;不等于&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;逻辑运算符有&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&amp;&amp;&nbsp;&nbsp;和&nbsp;&nbsp;||&nbsp;&nbsp;或&nbsp;&nbsp;!&nbsp;非&nbsp;&nbsp;()括号&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;设定了模式后,就可以设置对应的动作了,在gawk中,动作必须用花括号括起来。ga&nbsp;<BR>wk能完成的动作并不多,毕竟它是一种报告分析语言。一般情况下,只要熟悉print和p&nbsp;<BR>rintf命令就足够了,print命令的格式非常简单:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;print&nbsp;item1,item2,…………&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;输出时,每个项目输出一栏,中间用空格分开。一个print后面不跟着任何变量会导致&nbsp;<BR>gawk显示当前的输入行($0)。如果要输出一个字符串,使用引号把它括起来,特别是&nbsp;<BR>如果要输出一个空行,使用print&nbsp;&quot;&quot;。这里是一个例子,它将list文件的头两栏输出:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gawk&nbsp;'{print&nbsp;$1,$2}'&nbsp;list&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;由于输入的文本文件内容有多行,你在命令栏中设计的模式/动作会对每一行执行一次&nbsp;<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -