Linux命令 ‖笔记Linux

linux之文本内容替换命令sed

2022-03-01  本文已影响0人  每天进步一点点变成更好的自己

sed简介:流编辑工具,用来对文本进行过滤与替换操作。

sed流程:sed通过一次仅读取一行内容来对某些指令进行处理后输出。

1、sed通过文件或管道读取文件内容,但sed默认并不直接修改源文件,而是将读入的内容复制到缓冲区中,称之为模式空间。
2、所有的指令操作都是在模式空间找那个进行
3、sed根据相应的指令对模式空间中的内容进行处理并输出结果,默认输出至标准输出(即屏幕上)。


image.png

sed基本语法格式:
用法:sed[选项]...{脚本指令}[输入文件]...
选项: -version 显示sed版本
-help :显示帮助文档
-n,-quiet,-silent静默输出,默认情况下,sed程序在所有的脚本指令执行完毕后,将自动打印模式空间中的内容。
-e script允许多个脚本指令被执行
-f script-file从文件中读取脚本指令,对编写自动化脚本程序很实用
-i ,-in-place 该选项直接修改源文件
-l N 该选项指定l指令可以输出的行长度,l指令为输出非打印字符。
-posix 禁用GNU sed扩展功能。
-r 在脚本指令中使用扩展正则表达式。
-s,-separate 默认情况下,sed将把输入的多个文件名作为一个长的连续的输入流。而GNU sed则允许把它们当作单独的文件。
-u,-unbuffered 最低限度的缓存输入与输出
a,append表示追加指令;
i,insert表示插入指令;
d,delete表示删除指令;
s,substitution表示替换指令。
sed脚本指令的基本格式是:
[地址,即路径]命令(有些命令仅可以对一行操作,有些可以对多行操作),命令也可以用花括号进行组合,使命令序列可以作用于同一个地址。
address{
command1
command2
command3
}

比如:
sed '2a TYPE=Ethernet' test.txt  #第二行后追加TYPE=Ethernet
sed '3i TYPE=Ethernet' test.txt #第二行前追加TYPE=Ethernet
sed 's/yes/no/g' test.txt  #将样本文件中的所有yes替换为no
sed '3,4d' test.txt  # 删除第三、第四行的内容
将样例文本中的第二个<body>替换为</body>,编写sed脚本,即将body替换为/body,但仅替换第二个body
cat sed.sh内容如下:
/body/{
s::\/body:2
}
执行sed命令: sed -f sed.sh test.txt

行编辑器介绍

sed的基本工作方式

sed的基本工作方式是:

sed的替换命令s

sed的替换命令s:

sed的替换命令的加强版

1、全局替换 : s/old/new/g ,其中g为全局替换,用于替换所有出现的次数; /如果和正则匹配的内容冲突可以使用其他符号,如 :s@old@new@g
2、标志位

sed的多行模式

为什么要有多行模式: 配置文件一般有单行出现,但也有使用json或XML格式的配置文件,为多行出现。
多行模式处理命令N、D、P

上一篇下一篇

猜你喜欢

热点阅读