如何更换网站服务商,2018年互联网大会,帝国调用网站名称,有没有做网站的电话一、基本介绍
sed编辑器也叫流编辑器#xff08;stream editor#xff09;#xff0c;它是根据事先设计好得一组规则编辑数据流。
交互式文本编辑器#xff08;如Vim#xff09;中#xff0c;可以用键盘命令交互式地插入、删除或替换文本数据。 sed编辑器是根据命令处理…一、基本介绍
sed编辑器也叫流编辑器stream editor它是根据事先设计好得一组规则编辑数据流。
交互式文本编辑器如Vim中可以用键盘命令交互式地插入、删除或替换文本数据。 sed编辑器是根据命令处理数据流中的数据这些命令来自于命令行输入或者来自于保存在命令文本文件中。它可以执行以下操作 从输入中读取一行数据根据所提供的编辑器命令匹配数据按照命令修改数据流中的数据将新的数据输出到STDOUT sed编辑器匹配并针对一行数据执行所有命令后就会读取下一行数据并重复这个过程在它处理完数据流中的所有行后就结束运行。
由于命令是按顺序逐行执行的因此sed编辑器只需对数据流处理一遍one pass through即可完成编辑操作。这使得sed编辑器比交互式编辑器快得多还可以快速完成对数据的自动修改。 格式 sed options script file script制定了应用于流数据中的单个命令。如果需要多个命令可以使用 -e 选项在命令行中指定或者使用 -f 选项在单独的文件中指定。 sed命令选项 -e commands在处理输入时加入额外的sed命令-f file在处理输入时将file中指定的命令添加到已有的命令中-n不产生命令输出使用pprint命令完成输出
二、处理文本
1、在命令行中使用单个sed编辑器命令
默认情况下sed编辑器会将指定的命令应用于STDIN输入流中所以可以直接将数据通过管道符传入sed编辑器进行处理。
替换命令s使用它可以将斜线间指定的第二个字符串替换掉第一个字符串。
echo 这是1个测试 | sed s/1个/2个/ 批量替换文件中某个字符
sed s/成都/苏州/ test.txt 而且sed编辑器并不会修改文本文件的数据它只是将修改后的数据发送到STDOUT。
查看文本文件内容依然未变。 2、在命令行中使用多个sed编辑器命令 如果想执行多个命令可以使用 -e 选项。 多个命令都会应用于文件的每一行数据命令之间必须要用分号;分隔开并且命令末尾和分号之间不能出现空格。 sed -e s/贵州/成都/;s/北京/广州/ test.txt 也可以用bash shell中的次提示符来分隔命令。 必须要在闭合的单引号所在行结束命令。因为bash shell一旦发现了闭合单引号就会执行命令。 3、从文件中读取sed编辑器命令 可以使用 -f 选项来读取文件中的sed编辑器命令。 三、基础命令 1、替换选项
替换标志
替换命令在默认情况下只替换每行中出现的第一处匹配文本要想替换每行中所有的匹配文本必须使用替换标志substitution flag替换标志在替换命令字符串之后设置。 格式s/pattern/replacement/flags 4种替换标志 数字指明新文本将替换行中的第几处匹配gglobal指明新文件将替换行中所有的匹配p指明打印出替换后的行w file将替换的结果写入文件 第一种替换标志数字
# 将每行中的第二个成都替换成武侯区
sed s/成都/武侯区/2 test.txt 第二种替换标志gglobal
#将每行中所有的成都都替换成武侯区
sed s/成都/武侯区/g test.txt 第三种标志p
替换标志p会打印出包含替换命令中指定匹配模式的文本行它通常和 -n 选项一起使用-n 选项会抑制sed编辑器的输出替换标志p会输出替换后的行二者配合使用就是只输出被替换命令修改过的行。
# 将每行中的第一个成都替换成武侯区并打印出进行过此操作的文本行
sed -n s/成都/武侯区/p test.txt 第四种替换标志w file 替换标志 w 会将输出保存到指定文件中。
# 将进行过替换操作的文本行写入test1.txt中
sed s/成都/武侯区/w test1.txt test.txt 替代字符 sed编辑器允许选择其它字符作为替换命令的替代分隔符。如下所示将感叹号!当做替换命令的分隔符。 sed s!/bin/bash!/bin/csh! /etc/passwd 行寻址
默认情况下sed编辑器中使用的命令会应用于所有的文本行。如果只想将命令应用于特定的某一行或某些行必须使用行寻址。 格式[address] command 行寻址有2种形式 以数字形式表示的行区间匹配行内文本的模式 也可将针对特定地址的多个命令分组 address { command1 command2 } 以数字形式的行寻址
可以用行号来引用文本流中的特定行。sed编辑器会将文本流中的第一行编号为1第二行编号为2以此类推。
在命令中指定的行地址既可以是单个行号也可以用起始行号、逗号以及结尾行号指定的一个行区间。
如下所示将第三行中的北京替换成Beijing。
sed 3s/北京/Beijing/ test1.txt 如下所示使用了行区间将第1行到第3行的杭州替换成Hanzhou。
sed 1,3s/杭州/Hanzhou/ test1.txt 如果想将命令应用于从某行开始到结尾的所有行可以使用美元符号作为结尾行号。 以文本模式过滤 格式/pattern/command
必须将指定的模式pattern放入正斜线内sed编辑器才会将该命令应用于包含匹配模式的行。
如下所示将用户csb_user1的默认shell从/bin/bash修改成/bin/csh 命令组 如果需要在单行中执行多条命令可以使用花括号将其组合起来sed编辑器会执行匹配地址中列出的所有命令。 也可以指定行区间 2、删除行 可以使用删除d命令删除文本流中的特定行默认情况下它会删除匹配指定模式的所有行。
删除第4行的数据
sed 4d test1.txt 删除第1到3行的数据
sed 1,3d test1.txt 删除第2行到最后一行的所有数据
sed 2,$d test1.txt 删除含有天津的行
sed /天津/d test1.txt