您当前的位置:网站首页>aug,皇家守卫军-门厅不锈钢灰玻璃隔断,设计感十足的台式美学公寓

aug,皇家守卫军-门厅不锈钢灰玻璃隔断,设计感十足的台式美学公寓

2019-07-10 11:34:46 投稿作者:admin 围观人数:269 评论人数:0次

作者:tongye

链接:https://www.cnblogs.com/tongye/p/10665771.html

一、流修正器 sed 与指令 sed

Linux 中,常运用流修正器 sed 进行文本替换作业。与成都好玩的当地常运用的交互式修正器(如vim)不同,sed 修正器以批处理的方法来修正文件,这比交互式修正器快得多,能够快速完结对数据的修正修正。


一般来说,sed 修正器会履行以下操作:


1)一头次从输入中读取一行数据;

2)依据所供给的修正器指令匹配数据;

3)依照指令修正流中的数据;

4)将新的数据输出到 STDOUT。


在 sed 修正器匹配完一行数据后,它会读取下一行数据并重复这个进程,直到处理完一切数据。运用 sed 指令翻开一个 sed 修正器。sed 指令的格局如下:


sed [options] edit_commands [file]    # [ ] 中的内容为可选可不选


其间,options 为指令选项,挑选不同的 options 能够修正 sed 指令的行为,主要有 3 个选项:


1)-e 选项: 在处理输入时,将 script 中指定的修正指令添加到已有的指令中。浅显的说,就是在 sed 后边直接添加修正指令:


sed -e 'edit_commands' [files]


sed 指令在默许状况下运用的是 -e 选项。当只需一个修正指令时,-e 选项能够省掉;可是当要在一条 sed 句子中履行多个修正指令时,就需求运用 -e 选项了:


sed -e 's/root/ROOT/g; s/bin/BIN/g' /etc/passwd &n成慧琳bsp;     # 运用 sed 一起履行两条修正指令(本文大部分用例都直接运用 /etc/passwd 文件)

sed aug,皇家护卫军-门厅不锈钢灰玻璃间隔,规划感十足的台式美学公寓-e 's/root/ROOT/g' -e 's/bin/BIN/g' /etc/passwd   # 运用 sed 一起履行两条修正指令


2)-f 选项:在处理输入时,将 file 中指定的修正指令添加到已有的指令中:


前面说到,在需求一起履行多条修正指令时,能够运用 -e 选项。可是当所需求履行的修正指令数量很多时,每次运用 sed 时一行一行地敲明显不是很便利,这时能够将所用到的 sed 修正指令写入一个文件,然后运用 sed -f 选项来指定读取该文件:


$ cat script.sed
$ s/root/ROOT/
$ s/bin/BIN/
$ s/home/HOME/


sed -f script.sed /etc/passwd


3)-n 选项: 不发生指令输入:


sed -n 's/root/ROOT/' /etc/p琴asswd


运用 -n 选项不会将流修正器的内容输出到 STDOUT,通常将 -n 选项与 p 指令结合起来运用,以只打印被匹配的行。


除了这三个选项外,sed 修正器还供给了许多指令,用来进行更具体的操作,简单列一下,后边再细心介绍:


指令描绘
s文本替换操作
d删去操aug,皇家护卫军-门厅不锈钢灰玻璃间隔,规划感十足的台式美学公寓作
i刺进操作
a附加操作
c将一行文本修正为新的行
y逐字符替换
p打印文本行
=打印行号
w向文件中写入数据
r从文件中读取数据

二、运用 sed 指令进行文本替换

sed 运用 s一般的世界小说 指令来进行文本替换操作,根本格局如下:


sed 's/srcStr/dstStr/' file


其间,srcStr 为想要替换的文本,dstStr 为即将替换成的文本。运用 s 指令时,sed 修正器会在一行一行地读取文件 file,并在每行查找文本 srcStr,假如找到了,则将该处的 srcStr 替换为 dstStr。


/ 字符为界定符,用于分隔字符串(sed 修正器答应运用其他字符作为替换指令中的字符串分隔符):


sed 's!/bin/bash!/BIN/BASH!' /etc/passwd    # 运用 ! 作为字符串分隔符


默许状况戴树红下,替换指令只会替换掉方针文本在每行中榜首次呈现的当地。若想要替换掉每行中一切匹配的当地,能够运用替换符号 g。替换符号放在修正指令的结尾。除了 g 外,还有几种替换符号:


1)数字:指明替换掉第几次匹配到的文本,没有设置这个符号时,默许是替换榜首次匹配的文本:


sed 's/root/ROOT/2' /etc/passwd


这行指令将 /etc/passwd 文件中每行的第 2 个 root 替换为 ROOT;


2)g :替换一切匹配到的文本:


sed 's/root/ROOT/g' /etc/passwd

 

这行指令将 /etc/passwd 文件中的 root,悉数替换为 ROOT;


3)p :打印与替换指令中指定形式(srcStr)相匹配的行:


sed 's/root/ROOT/p' /etc/passwd


履行这指令,会在 STDOUT 上看到包括有 root 的行被输出了两次,一次是 sed 修正器主动输出的;琼海天气预报另一次则是 p 符号打印出来的匹配行。


单独地运用 p 符号没什么用途,aug,皇家护卫军-门厅不锈钢灰玻璃间隔,规划感十足的台式美学公寓通常将 p 符号和 -aug,皇家护卫军-门厅不锈钢灰玻璃间隔,规划感十足的台式美学公寓n违章 选项结合起来运用,这样比目鱼v5就能够只输出被匹配替换过的行了:


ed -n 's/root/ROOT/gp' /etc/passwd    # 将 /etc/passwd 中一切的 root 都替换成 ROOT,并输出被修正的行


注:能够运用 " = " 指令来打印行号,用法与 p 相同。 

 

4)w file :将替换的四虎成果写到文件中,不过只保存被修正的行,与 -n + p 的功用相似:


sed -n 's/root/ROOT/g w change.txt' /etc/passwd     # 将 /etc/passwd 中一切的 root 都替换成 ROOT,并将被修正的行保存到文件 change.txt 中去

三、运用行寻址对特定行进行修正

默许状况下,sed 修正器会对文件中的一切行进行修正。当然,也能够只指定特定的某些行号,或许行规模来进行流修正,这需求用到行寻址。所指定的行地址放在修正指令之前:


[address] commands


3.1 运用数字方法进行行寻址


sed 修正器将文本流中的每一行都进行编号,榜首行的编号为 1 ,后边的按次序分配行号。经过指定特定的行号,能够挑选修正特定的行。举几个比如:


sed '3 s/bin/BIN/g' /etc/passwd    # 将第3行中一切的 bin 替换成 BIN

sed '2,5 s/bin/BIN/g' /etc/passwd   # 将第2到5行中一切的 bin 替换成 BIN

sed '10,$ s/bin/BIN/g' /etc/passwd  # 将裸胸第10行到最终一行中一切的 bin 替换成 BIN

 

注:行寻址安徒生不止对替换指令有用,对其他指令也都是有用的,后边也会用到。

 

3.2 运用文本形式过滤器过滤行


sed 修正器答应指定文本形式来过滤出指令要效果的行,格局如下:


/pattern/aug,皇家护卫军-门厅不锈钢灰玻璃间隔,规划感十足的台式美学公寓command


有必要运用斜杠符 " / " 即将指定的文本形式 pattern 包括起来。sed 修正器会寻觅匹配文本形式的行,然后对这些行履行修正指令:


sed -n '/root/s/bin/BIN/p' /etc/passwd    # 寻觅包括有字符串 root 的行,并将匹配行的 bin 替换为 BIN


与数字寻址相同,也能够运用文本过滤区间来过滤行:


sed '/pattern1/,/pattern2/ edit_command' file


这行指令会在文件 file 中先寻觅匹配 pattern1 的行,然后从该行开端,履行修正指令,直到找到匹配 pattern2  的行。可是需求留意的是,运用文本区间过滤文本时,只需匹配到了开端形式(耀莱集团綦建虹女儿pattern1),修正指令就会开端履行,直到匹配到完毕形式(pattern2),这会导致一种状况:一个文本中,先匹配到了一对 pattern1、pattern2,对该文本区间中的文本履行了修正指令;然后,在 pattern2 之后又匹配到了 pattern1,这时就会再次开端履行修正指令,因而,在运用文本区间过滤时要分外当心。举个比如:


sed -n '/root/,/nologin/ s/bin/BIN/p' /etc/passwd


这行指令对 /etc/passwd 进行了两次文本区间匹配,成果如下:


四、运用 sed 指令删去行

sed 修正器运用 d 指令来删去文本流中的特定行。运用 d 指令时,一般需求带上位寻址,以删去指定的行,不然默许会删去一切文本行:


sed '/root/d' /etc/passwd   # 删去匹配 root 的行

sed '2,$d' /etc/passwd    # 删去第2到最终一行

五、运用 sed 指令刺进和附加文本

sed 修正器运用 i 指令来向数据流中刺进文本行,运用 a 指令来向数据流中附加文本行。其间:i 指令会在指定行前添加一个新行;a 指令会在指定行后添加一个新行。


需求留意的是,这两个指令都不能在单个指令行上运用(即不是用来在一行中刺进或附加一段文本的),只能指定刺进仍是附加到另一行。指令格局如下:


sed '[address][i | a]\newline' file


newline 中的文本即为即将刺进或附加在一行前面或后边的文本。常常运用这两个指令结合行寻址在特定的行前面或后边添加一个新行。举个比如:


sed 'i\Insert a line behind every line' /etc/passwd      # 向数据流的每一行前面添加一个新行,新行的内容为 \ 后边的内容

sed '1i\Insert a line behind the first line' /etc/passwd   # 在数据流的榜首行前面添加一个新行

sed '3a\Append a line after the third line' /etc/passwd      # 在数据流的第三行后边添加一个新行
    
sed '$a\Append a line in the last line' /etc/passwd      # 在数据流的最终一行后边添加一个新行

六、运用 sed 指令修正行

运用冰河世纪指令 c 能够将数据流中的整行文本修正为新的行,与刺进、附加操作相同,这要求在 sed 指令中指定新的行,格局如下:


sed '[address][c背上长痘痘的原因]\newtext' file


newtext 中的文本为匹配行即将被修正成的文本。


sed '3 c\New text' /etc/passwd     # 将数据流中第三行的内容修正为 \ 后边的内容

sed '/root/ c\New text' /etc/passwd  # 将匹配到 root 的行的内容修正为 \ 后边的内容

sed '2,4c\New text' /etc/passwd     # 将第2到4行的内容修正为 \ 后边的内容,可是不是逐行修正,而是会将这之间的一曲红尘 3 行用一行文原本代替


留意这儿对地址区间运用aug,皇家护卫军-门厅不锈钢灰玻璃间隔,规划感十足的台式美学公寓 c 指令进行修正时,不会逐行修正,而是会将整个区间用一行修正文本代替。 

七、运用 sed 指令逐字符转化

运用 y 参数能够按要求对文本进行逐字符转化。格局如下:


[address]y/inchars/outchars/


转化指令会对 inchars 和 outchars 的值进行一对一的映射。inchars 中的榜首个字符会被转化成 outchars 中的榜首个字符;inchar星美世界影城s 中的第二个字符会被转化成 outchars 中的第二个字符;... 直到处理完一行。假如 inchars 保监会和 outchars 的长度不同,则 sed 修正器会发生一个过错音讯。举个比如:


echo abcdefggfedcba | sed 'y/acg/ACG/'

 

输出成果为 AbCdefGGfedCbA。

八、运用 sed 指令处理文件

8.1 向文件中写入数据


前面现已说到过,能够运用 w 指令向文件写入行。格局如下:


[address]w filename


举个比如:


sed '1,2w test.txt' /etc/passwd

 

该句子将数据流的第 1、2 行写入文件 test.txt 中去。

 

8.2 从文件中读取数据


能够运用 r 指令来将一个文本中的数据刺进到数据流中去,与一般的刺进指令 i 相似,这也是对行进行操作的,指令格局如下:


[address]r filename


filename 为要刺进的文件。r 指令常结合行寻址运用,以将文本刺进到指定的行后边。举个比如:


sed '3 r test乳名.txt' /etc/passwd

 

这句话将文件 test.txt 中的内容刺进到数据流第三行后边去。

参阅书本:

《Linux指令行与shell脚本编程大全》 (第3版)

《Shell脚本学习指南》



●编号778,输入编号直达本文

●输入m获取文章目录

引荐↓↓↓

运维

更多引荐25个技能类大众微信

包括:程序人aug,皇家护卫军-门厅不锈钢灰玻璃间隔,规划感十足的台式美学公寓生、算法与数据结构、黑客技能与网络安全、大数据技能、前端开发、Java、Python、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维等。

the end
门厅不锈钢灰玻璃隔断,设计感十足的台式美学公寓