^pattern$:用pattern来匹配整行
^
[
[
:space:
]
]
*$:空行或包含空白字符的行
^
[
[
:space:
]
]
. :匹配以空格开头但不为空行的行
\
<
root\
>
:词首词尾锚定:匹配单词root,而不是*root,root*,*
(4)分组引用
\(n\):分组
\n :引用第n个分组
非交互式编辑器
sed [option] ... 'script command' file
option:
-n :不输出模式空间 中的内容至屏幕
-e :多点编辑
-r :支持扩展正则
-f file :以file中指定的条件匹配
-i :修改源文件
~ :步长
s :替换
不加参数,只替换每行匹配到的第一个
g :全局替换
p :显示替换成功的行
i :不区分大小写
w file :将结果写入到file中
e :拼接
c :修改整行
script:
n,m :匹配n~m行
n,+m:匹配第n行及其后m行
1,/root/
/root/,1
/root/,/shutdown/
command:
d :删除
p :打印模式空间
i :行前加入指定内容
a :行后加入指定内容
c :覆盖整行
= :输出行号
w file :写入文件file
r file :从file中读取
[root@test1 test]
northwest NW Charles Main 3.0 .98 3 34
western WE Sharon Gray 5.3 .97 5 23
southwest SW Lewis Dalsass 2.7 .8 2 18
southern SO Suan Chin 5.1 .95 4 15
southeast SE Patricia Hemenway 4.0 .7 4 17
eastern EA TB Savage 4.4 .84 5 20
northeast NE AM Main Jr. 5.1 .94 3 13
north NO Margot Weber 4.5 .89 5 9
central CT Ann Stephens 5.7 .94 5 13
1、只打印找到north的行
[root@test1 test]
2、删除第三行,其余行输出到屏幕
[root@test1 test]
从第3行到最后一行都删除,将剩余部分输出到屏幕
[root@test1 test]
[root@test1 test]
3、找到datafile中的所有west并替换成north,将替换后的内容输出到屏幕。
[root@test1 test]
4、所有的Hemenway所在的位置都用Jones来取代,而且只有改变的行被打印
[root@test1 test]
5、打印在west和east之间的模式范围内所有行
[root@test1 test]
6、把指定的行north写入到一个文件newfile中
[root@test1 test]
7、在north行后添加“central CT Ann Stephens 5.7 .94 5 13”
[root@test1 test]
1、删除/etc/grub2.conf文件中所有以空白开头的行行首的空白字符
[root@test1 Test]
2、删除/etc/fstab文件中所有以
[root@test1 Test]
3、在/root/install.log每一行行首增加
[root@test1 Test]
4、在/etc/fstab文件中不以
[root@test1 Test]
5、利用sed 取出ifconfig命令中本机的IPv4地址
[root@test1 Test]
[root@test1 Test]
sed有两个内置的存储空间:在使用高级命令的时候会用到
模式空间:sed内置的一个缓冲区,用来存放,修改从输出文件中读取的内容
保持空间:sed内置的另一个缓冲区,用来存放临时的数据,sed可以 在保持空间和模式空间交换数据,但不能在保持空间执行普通sed命令。
sed 在每次循环读取数据是,模式空间会被清空,但保持空间的内容不变
编辑命令:
h :把模式空间中的内容覆盖至保持空间中
H :把模式空间中的内容追加至保持空间中
g :把保持空间中的内容覆盖至模式空间中
G :把保持空间中的内容追加至模式空间中
x :把模式空间中的内容与保持空间中的内容互换
n :覆盖读取匹配到的行的下一行至模式空间中
N :追加读取匹配到的行的下一行至模式空间中
d :删除模式空间中的行
D :删除多行模式空间中的所有行
1. 把test中的1-3行复制到文件末尾
[root@test1 Test]
2. 把第二行复制到第四行
[root@test1 Test]
注:上面两个示例中,用的H,故模式空间本来会有一个空行,所以添加的内容和源文件中会以空格分开,下面的用h,会覆盖原保持空间内容,故没有空格分开
3. 把第行剪切到文件末尾
[root@test1 Test]
4. 把1-2行剪切到文件末尾
[root@test1 Test]
5. 把/etc/passwd中能登录的用户及密码(/etc/shadow)提取出来写入user-passwd.txt文件中
(1)先取出/etc/passwd中以bash结尾的行
[root@test1 Test]
(2)将上面取出的行截取出来用户名,写入user中
[root@test1 Test]
(3)根据user文件中的用户名截取/etc/shadow中的密码串
[root@test1 Test]
(4)截取(3)取出行的密码串
[root@test1 Test]
注:这样虽然账号和密码都取出来了,但是没有写入文件中,写入文件会很麻烦,通过写shell脚本来实现
[root@test1 Test]
1
2 sed -n '/bash$/ s/:.*//w user.txt' /etc/passwd
3 > user-passwd.txt
4 for user in `cat user.txt`
6 pass=`sed -n "/$user/ p" /etc/shadow | cut -d : -f 2`
7 echo "用户名: $user 密码:$pass" >> user-passwd.txt
8 done
[root@test1 Test]
[root@test1 Test]
用sed将换行符改成空格
[root@nfs01 ~]
------------------------------------------------------------------------------------------------------- 返回目录
N 将下一行读入到模式空间$! 如果不是最后一行,ba跳转到label a处s/a/A/ 替换a为A,只替换一次
步骤1-3(即:a;N;$!ba;)就是为了将file全部内容读到模式空间中,然后再进行替换,这样替换就只会做一次。
要实现这一点,您需要在sed脚本中分支并保留缓冲区.该脚本使用两个缓冲区:模式缓冲区(它是sed存储当前处理的行的缓冲区,用于模式匹配测试的缓冲区)和保持缓冲区(用于存储前一行的缓冲区).我们的想法是存储上一个/错误/模式匹配的所有行,并在下一个/错误/匹配或流结束时检查/ ALU /出现.sed -n '# if /Error/ pattern occured, jump to /ALU/ ch...
sed 编辑器是 Linux 系统
管理员的工具包中最有用的资产之一,因此,有必要彻底地了解其应用。
Linux 操作系统最大的一个好处是它带有各种各样的实用工具。存在如此之多不同的实用工具,几乎不可能知道并了解所有这些工具。可以简化关键情况下操作的一个实用工具是 sed。它是任何管理员的工具包中最强大的工具之一,并且可以证明它自己在关键情况下非常有价值。
实用工具是一个“编辑器”,但它与其它大多数编辑器不同。除了不面向屏幕之外
文章目录一、sed 语法格式参数选项动作指令二、参数使用举例1、输入文件的几种方式2、-n 抑制输出3、-i 修改文件内容且不进行输出查看input文件原内容:sed 不带 -i 参数时进行替换指令sed -i 进行替换指令sed -i 使用正则表达式匹配4、-e 和 -f 指定脚本4.1 语法:4.2 下面几种示例是等价的:4.3 使用 ` -e `实现多点编辑三、各指令使用举例1、`p` 打印...
sed在处理文本时是逐行读取文件内容,读到匹配的行就根据指令做操作,不匹配就跳过。
sed是Linux下一款功能强大的非交互流式文本编辑器,可以对文本文件进行增、删、改、查等操作,支持按行、按字段、按正则匹配文本内容,灵活方便,特别适合于大文件的编辑。本文主要介绍sed的一些基本用法,并通过shell脚本演示sed的使用实例。
1.sed的使用方法,调用sed 命令的语法有两种:
一.在命令行指定sed指令对文本进行处理:sed +选项 ‘指令’ 文.
###########################################################################################
sed -i (-i参数直接修改文件内容)
sed 的[-i]参数可以直接修改文件内容,该功能非常有用!
举例来说,如果有一个100万行的文件,要在第100行加某些文字。此时使用vim可能会疯掉!因为文件太大了打不开...
-i :直接修改读取的文件内容,而不是输出到终端。
动作说明: [n1[,n2]]function
n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』
function:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串
sed编辑器
sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规划来编辑数据流。
sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么储存在一个命令文本文件中。
sed工作流程主要包括读取、执行、显示三个过程:
读取:sed从输入流(文件、管道、标准输入)中读取一行内容并存储到临时缓冲区中(又称模式空间)。
执行:默认情况下,所有sed命令都在模式空间按顺序执行,除非指定了行的地址,否则sed命令将会在所有行上一次执行。
显示:发送修改后的内容到输出
文章目录sed概念sed的工作过程sed的用法地址指定编辑命令选项
sed概念
sed就是数据流编辑器,也是用来处理纯ASCII码的文本,在处理的过程当中以行为单位逐行进行处理,所以它也是一个行编辑器
sed本身也是一种语言,只不过这个语言仅仅是对文件作编辑的语言
sed的工作过程
首先它把文件中的每一行都读进模式空间(存在模式条件的空间),接着拿每一行跟我们的模式条件做匹配,如果能够被...