建设工作站服务器
1. Sed概述
sed是一个在线编辑器,一次处理一行内容。 处理时,将当前处理的行存储在临时缓冲区中,称为“阵列空间”( pattern space ),然后用sed命令处理缓冲区中的内容,处理完成后将缓冲区内容发送到屏幕。 然后处理以下行: 像这样重复到文件的末尾。 除非使用重定向的存储输出,否则文件内容不会改变。 Sed主要用于自动编辑一个或多个文件; 编写简化文件重复操作的转换程序等。 以下介绍的是Gnu版本的Sed 3.02。
2 .决定地址
通过指定地址,可以搜索要编辑的行。 该地址由数字组成,用逗号分隔的两行表示从两行开始的行的范围(包括用行数表示的两行)。 例如,1、3表示1、2、3行,美元符号$表示最后一行。 范围可以通过数据、正则表达式或两者的组合来确定。
3. Sed命令
调用sed命令有两种形式。
*
sed[options]\\\&; quot; command\\&; quot; file(s )
*
sed[options]-fscriptfilefile(s ) )。
a\\\\
在当前行之后添加一行文本。
b lable
分支到脚本中的标记位置,如果不存在分支,则分支到脚本的末尾。
c\\\\
用新文本改变本职文本。
d
从“模板块”( Pattern space )位置删除行。
d
删除模板块的第一行。
i\\\\
在当前行上方插入文本。
h
将模板块的内容复制到内存中的缓冲区。
h
将模板块的内容添加到存储器中的缓冲区
g
获取内存缓冲区的内容并替换当前模板块中的文本。
g
获取内存缓冲区的内容并将其添加到当前模板块文本的后面。
l
列表无法打印字符列表。
n
读取下一个输入行,并用以下命令而不是第一个命令处理新行。
n
在模板块的后面添加以下输入行,在两者之间嵌入新行,并更改当前行号。
p
打印模板块的行。
p (大写) )
打印模板块的第一行。
q
结束Sed。
r file
从文件中读取行。
t标签
if分支从最后一行开始,如果条件得到满足,或者t、t命令得到满足,就会分支为带有标签的命令,或者分支为脚本的最后。
t标签
错误分支从最后一行开始,当出现错误或t、t命令时,分支到已标记命令或脚本的末尾。
w file
在文件的末尾添加模板块。
W file
将模板块的第一行写至文件末尾并添加。
!
指示后续命令将作用于所有未选定的行。
s/re/string
用string替换正则表达式re。
=
打印当前行号。
#
在下一个换行符之前扩展注释。
以下是置换标记
*
g表示在行内全面调换。
*
p表示打印行。
*
w表示向一个文件写入行。
*
x表示模板块中的文本与缓冲区中的文本交换。
*
y意味着将一个字符翻译成另一个字符。 但是,它不用于正则表达式。
4 .可选
-e command,-expression=command
允许编辑多台。
-h,-help
打印帮助,显示错误列表的地址。
-n,-quiet,-silent
取消默认输出。
-f,-filer=script-file
引导sed脚本文件名。
-V,-version
打印版本和版权信息。
5 .元字符集^
锚点行的开始与以sed开头的所有行匹配,例如/^sed/。
$
锚点行的结尾与以sed结尾的所有行匹配,例如/sed$/。
同调
换行字符以外的字符,例如/s.d/matchs,后面跟有任意字符,后面跟有d。
*
与零个或多个字符匹配的所有模板(如/*sed/)都是一个或多个空格后紧跟sed的行。
[]
/[ ss ]匹配指定范围内的字符,如ed/match sed或sed。
[^]
/[ ^ a-rt-z ]匹配指定范围之外的字符,例如匹配不包含ed/a-r和t-z的字符的开头,并匹配紧跟在ed之后的行。
\\\&; quot; ( () () () () ( ) ) ) ) ) ) ) ) ) )。
保存匹配的字符。 例如,s/\\\&; quot; ( love\\\\&; quot; able/\\&; quot; RS,loveable将被lovers替换。
保存搜索字符后,s/love/****/,love变为**love**。
\\\
/\\&; quot; 将单词的开头定位为与包含以love/love开头的单词的行相匹配。
\\\
/love\\\&; quot; 定位单词的结尾,以匹配包含以/love结尾的单词的行。
x\\\\{m\\\\}
/o\\\\{5\\\\}/重复字符x、m次,以匹配包含o的行。
x\\\\{m,\\}
/o\\\\{5,\\&; quot; /至少重复字母x m次,以匹配至少包含5个o的行。
x\\\\{m,n\\\\}
/o\\ { 5,10\\\}/5重复字符x至少m次、n次以下,例如与10个o匹配的行。
6 .示例
删除: d命令
*
$sed\\&; quot; 2d\\&; quot; 删除example-example文件的第二行。
*
$ sed \\\&; #039; 2、$d\\&; quot; 删除example-example文件中从第二行到最后的所有行。
*
$sed\\&; quot; $d\\&; quot; 删除example-example文件中的最后一行。
*
$sed\\&; quot; /test/\&; quot; 删除dexample-example文件中包含test的所有行。
替换: s命令
*
$sed\\&; quot; s/test/mytest/g\\&; quot; example在整行中将mytest替换为mytest。 如果没有g标签,则mytest将仅替换每行中第一个匹配的test。
*
$sed-n\\\&; quot; s/^test/mytest/p\\&; quot; example--(-n )选项与p标志一起使用时,意味着只打印发生替换的行。 也就是说,如果一行开头的test被mytest替换,则打印它。
*
$sed\\\&; quot; s/^ 192.168.0.1/localhost/\\& amp; quot; example符号表示在替换字符串中找到的部分。 以192.168.0.1开头的所有行都将替换为您自己添加localhost的行,为192.168.0.1localhost。
*
$sed-n\\s\\\&; quot; ( love\\\&; quot; able/\\&; quot; 1RS/p\\&; quot; example--love标记为1,表示所有loveable
*
$sed\\&; quot; s#10#100#g\\&; quot; example-对于任何字符,s命令后面的字符都将被视为新分隔符。 因此,“#”在这里是分隔符,而不是默认的“/”分隔符。 表示将所有10替换为100。
选定行的范围:逗号
*
$ sed -n \\\&; #039; /test/,/check/p\\&; quot; example-打印由模板test和check定义的范围内的所有行。
*
$ sed -n \\\&; #039; 5、/^test/p\\&; quot; example-5打印从第五行到以第一个test开始的行的所有行。
*
$ sed \\\&; #039; /test/,/check/s/$/sed test/\&; quot; example对于模板test和west之间的行,每行的末尾将替换为字符串sedtest。
多点编辑:电子命令
*
$sed-e\\&; quot; 1,5d\& amp; quot; -e\\&; quot; s/test/check/\\&; quot; example--(-e )选项允许在同一行中执行多个命令。 如示例所示,第一个命令删除1到5行,第二个命令将test替换为check。 命令的执行顺序会影响结果。 如果两个命令都是替换命令,则第一个替换命令会影响第二个替换命令的结果。
*
$ sedexpression=\\ & amp; quot; s/test/check/\\&; quot; expression=\\ & amp; quot; /love/d\\\&; quot; example可以为一个比sed表达式赋值。
从文件读取: r命令
*
$sed\\\&; quot; /test/rfile\\&; quot; example-file的内容被读取,并显示在与test匹配的行的后面。 如果多行匹配,则文件内容显示在所有匹配行的下方。
写入文件: w命令
*
$sed-n\\&; quot; /test/wfile\\&; quot; exampleexample中包括test的所有行都将写入文件。
附加命令: a命令
*
$sed\\\&; quot; /^test/a\\\\&; quot; -thisisaexample\\\&; quot; example\\\&; quot; -thisisaexample\\&; quot;
插入: I命令
$sed\\\&; quot; /test/I\\\\&; quot;
new line
————————3354——-\ & amp; quot; example
如果test匹配,请在匹配行之前插入反斜杠后的文本。
下一个: n命令
*
$ sed \\\&; #039; /test/{ n; s/aa/bb/; () ) ) example如果test匹配,则移动到匹配行的下一行,替换该行的aa使其成为bb,然后打印该行并继续。
变形: y命令
*
$sed\\&; quot; 1、1,10y/abcde/abcde/\\&; quot; example将110行中的所有abcde转换为大写。 请注意,正则表达式元字符不能使用此命令。
退出: q命令
*
$sed\\&; quot; 10q\\&; quot; 打印example-10行,然后退出sed。
保留和检索: h和g命令
*
$sed-e\\&; quot; /test/h\\&; quot; -e\\&; quot; 当$gexample-sed处理文件时,所有行都存储在名为模式空间的临时缓冲区中。 除非删除行或取消输出,否则所有已处理的行都将打印在屏幕上,然后图案空间被清空并存储在新行中等待处理。 在本例中,发现与test匹配的行后,存储在模式空间中,h命令将其复制并存储在称为保持缓冲器的特殊缓冲器中。 第二条语句意味着,当到达最后一行时,g命令将检索包含缓冲区的行,将其返回到图案空间,并将其添加到当前存在于图案空间中的行的末尾。 在本例中,添加到最后一行。 简单来说,包含test的所有行都会被复制并添加到该文件的末尾。
保留和交换: h和x命令
*
$sed-e\\\&; quot; /test/h\\&; quot; -e\\\&; quot; /check/x\\&; quot; example模式空间交换和缓冲区内容保留。 这意味着交换包含test和check的行。
7 .脚本
Sed脚本是Sed的命令列表,在启动Sed时使用-f选项引导脚本文件名。 Sed对脚本中输入的命令非常挑剔,因此不要在命令的末尾添加空格或文本。 如果一行中有多个命令,请用分号分隔。 以#开头的行是注释行,不能跨越行。
详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn