Linux sed 命令详解

Linux sed 命令详解,第1张

sed命令行格式:sed [options] 'command' file(s)

options常用选项

-n或--quiet或——silent:仅显示script处理后的结果

-e:以选项中的指定的script来处理输入的文本文件

-f:以选项中指定的script文件来处理输入的文本文件

-r∶sed 的动作支援的是延伸型正规表示法的语法

-i∶直接修改读取的档案内容,而不是由萤幕输出

-h或--help:显示帮助

-V或--version:显示版本信息。

Command常用命令:

a:新增,a 的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行)

c:取代,c 的后面可以接字符串,脊雀御这些字符串可以取代 n1,n2 之间的行

d:删除,d 后面通常不接任何字符串

i:插入,i 的樱岩后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行)

p:列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作

s:取代,可以直接进行取代的工作,通常与正规表达式搭配使用。

实例说明:

新增 *** 作:a命令

sed '/^bird/a\test' file将test追加到 以bird开头的行后面

删除 *** 作:d命令

sed '/^$/d' file #删除空白行

sed '2d' file #删除第二行

sed '2,$d' file #删除第2行到最后一行

sed '$d' file #删除最后一行

sed '/^bird/'d file #删除所有开头是bird的行

插入 *** 作:i命令

sed -i '3i\bird ' bird.conf #在bird.conf文件第3行之前插入bird

替换文本中的字符串:s命令

sed 's/bird/birds/' file #将文本中的bird替换成birds

sed -i 's/ bird / birds /g' file #将file文件中每一行的第一个bird替换岁返为birds

sed 一种流向编辑器 stream editor,是Linux中三大文件处理工具(awk, sed, grep)之一,能配合正则表达式,对文件处理发挥重要作用。

sed 流式处理过程分成读取,执行,展示三个阶段;

1. sed读取是从输入流(文件,管道,标准输入)读取一行并存储到它叫模式空间pattern buffer中。

2. sed执行,默认情况下,所有的SED命令都在模式空间中顺序的执行,除非指定了行的地址,否则SED命令将会在所有的行上依次执行。

3. sed 发送修改后的内容到输出流。在发送数据之后,模式空间将会被清空。在文件所有的内容都被处理完成之前,上述过程将会重复执行。

sed 以行为单位进行文本处理,可以对数据进行删除,替换,新增,选取等,配合正则,功力大增,有没有想一试身手呢,接下来我们就好好来盘一盘sed。

一.执行乎裂渣流程示例

打印内容

sed '' test 文件读取到模式空间后,没有任何脚本来处理,直接将模式空间内容直接输出到屏幕

接收输入

sed '' 接收标准输入的内容,并进行脚本处理,这里的脚本是空,所以不处理,直接输出到屏幕

二.sed 的两种执行方式

sed [-n] [-e] 'command(s)' files

sed [-n] -f scriptfile files

第一种方式是在命令行中使用,第二种方式是在SED脚本文件中使用;两种执行方式可以同时使用。

文件:

$ cat test

aaa

ddd

222

sss

12ds45

方式一:

sed -e '1d' -e '2d' -e '3d' test

sss

12ds45

方式二:

echo -e "1d\n2d\n3d" >commands.txt

sed -f commands.txt test

sss

12ds45

三.sed 命令行参数

-n 默认情况下,模式空间中的内容在处理完成后将会打印到标准输出,该选项用于阻止该行为

-e 指定要执行的命令,使用该参数,我们可以指定多个命令,让我们打印每一行两次:

sed -e '' -e 'p' quote.txt

-n, --quiet, --slient:与标准的-n选项相同

-e script,--expression=script:与标准的-e选项相同

-f script-file, --file=script-file:与标准的-f选项相同

--follow-symlinks:如果提供该选项的话,在编辑的文件是符号链接时,SED将会跟随链接

-i[SUFFIX],--in-place[=SUFFIX]:该选项用于对当前文件进行编辑,如果提供了SUFFIX的话,将会备份原始文件,否则将会覆盖原始文件

-l N, --line-lenght=N:该选项用于设置行的长度为N个字符

--posix:该选项禁用所有的GNU扩源判展

-r,--regexp-extended:该选项将启用扩展的正则表达式

-u, --unbuffered:指定该选项的时候,SED将会从输入文件中加载最少的数据,并且更加频繁的刷出到输出缓冲区。在编辑tail -f命令的输出,你不希望等待输出的时候该选项是非常有用的。

-z,--null-data:默认情岁悄况下,SED对每一行使用换行符分割,如果提供了该选项的话,它将使用NULL字符分割行

四. sed 基本命令

本章将会讲解一些常用的SED命令,主要包括DELETE,WRITE,APPEND,CHANGE,INSERT,TRANSLATE,QUIT,READ,EXECUTE等命令

1.删除 d

格式: [address1[,address2]]d

$: sed 'd' test.txt 删除模式空间中的每一行,源文件不变

$: sed '4d' test.txt 删除第四行

$: sed '4,9d' test.txt 删除第四行到第九行

$: sed '/Time/,/Good/d' 删除以Time 和Good开头的行

2.替换 s

格式:[address1[,address2]]s/pattern/replacement/[flags]

sed 's/,/ | /g' test.txtg:表示对所有内容进行替换

sed 's/,/|/ 2 ' test.txt 2: 表示只替换每行中第二个逗号

sed -n 's/genome/gene/p' test.txt p: 只输出改变的行

sed -n 's/genome/gene/w junk.txt' test.txt w: 替换后输出的内容储存到新的文件

sed -n 's/genome/gene/pi' test.txt i: 匹配大小写


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/12193499.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存