陈奇网络工作室

Linuxsed命令

建设工作站服务器

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

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3