Sed工具使用

2021年8月20日17:37:57 发表评论
摘要

【心语】每个人对未来都有这样那样的规划,可实现梦想的过程并不轻松,你要打败很多迷茫、懒惰、软弱、管住想退缩的自己。而如果你能在想放弃时多坚持一下,明天的你就多了感谢自己的理由,希望十年后的你,能感谢现在这个坚持努力的自己

简介:
Sed是一个非交互式文本编辑器,它可对文本文件和标准输入进行编辑,标准输入可以来自键盘输入,文本重定向、字符串、变量,甚至来自于管道的文本,与VIM编辑器类似,它一次处理一行内容,Sed可以编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。
在处理文本时把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),紧接着用Sed命令处理缓冲区中的内容,处理完成后把缓冲区的内容输出至屏幕或者写入文件。逐行处理知道文件末尾,然后如果打印在屏幕上,实质文件内容并没有改变,除非你使用重定向存储输出或者写入文件。
1、其语法格式为:

Sed             [-options]       [‘commands’]                   filename;

Sed 工具默认处理文本,文本内容输出屏幕已经修改,但是文件内容其实没有修改,需要加-i参数即对文件彻底修改

2、参数格式为:

x

# x 为指定行号

X,y

#指定从X到y的行号范围

/pattern/

#查询包含模式的行

/pattern/pattern/

#查询包含两个模式的行

/pattern/,x

#从与patternde的匹配行到X号行之间的行

X,/pattern/

#从X号行到与pattern的匹配行之间的行

X,y!

#查询不包括x和y行号的行

r

#从另一个文件中读文件

W

#将文本写入到一个文件

y

#变换字符

q

#第一个匹配模式完成后退出

1

#显示与八进制ASCII码等价的控制字符

{}

#在定位行执行的命令组

p

#打印匹配行

=

#打印文件行号

a\

#在定位行号之后追加文本信息

i\

#在定位行号之前插入文本信息

d

#删除定位行

c\

#用新文本替换定位文本

S

#使用替换模式替换相应模式

n

#读取下一个输入行,用下一个命令处理新的行

N

#将当前读入行的下一行读取到当前的模式空间

3、常用sed工具演练按理
例:替换test.txt文本中的old为new
[root@localhost ~]# sed 's/old/new/g' test.txt
Sed工具使用
例:指定某一行来替换,或者替换第二行
[root@localhost ~]# sed '2s/old/new/g' test.txt
Sed工具使用
例:指定替换某一行
[root@localhost ~]# sed '2c 1234' test.txt
Sed工具使用
例:将2-4行所有的内容替换成新的内容
[root@localhost ~]# sed '2,4c 456' test.txt
Sed工具使用
例:单独修改第二行和第三行
[root@localhost ~]# sed '2,3s/old/new/g' test.txt
Sed工具使用
例:单独修改第二行和第四行
[root@localhost ~]# sed -e '2s/old/new/' -e '4s/old/new/' test.txt
Sed工具使用
例:修改第2行和之后的第四行
[root@localhost ~]# sed '2~4s/old/new/g' test.txt
Sed工具使用
[root@localhost ~]# sed '2s/old/new/g;5s/old/new/g' test.txt
Sed工具使用
例:打印test.txt文本的第一行至第三行
[root@localhost ~]# sed -n '1p;2p' test.txt
Sed工具使用
例:打印文本的第2行至第五行
[root@localhost ~]# sed -n '2,5p' test.txt
Sed工具使用
例:打印文本的第一行与最后一行
[root@localhost ~]# sed -n '1p;$p' test.txt
例:删除文本第一行至第三行
[root@localhost ~]# sed '1,3d' test.txt
例:删除匹配行至最后一行
[root@localhost ~]# sed '/new/,$d' test.txt
例:删除最后一行
[root@localhost ~]# sed '$d' test.txt
例:删除文本1至6行
[root@localhost ~]# sed '1,6d' test.txt
列:删除文本的最后6行
[root@localhost ~]# for i in `seq 1 6`;do sed -i '$d' test.txt;done
Sed工具使用
例:在文本查找new行,并在改行下面添加一行 hellword
[root@localhost ~]# sed '/new/ahellwoed' test.txt
Sed工具使用
例:在文本查找new行,并在上一行添加hellword
[root@localhost ~]# sed '/new/ihellword' test.txt
Sed工具使用
例:在文本里面查找w结尾的行添加word, $表示结尾符,& 在sed中表示添加
[root@localhost ~]# sed 's/w$/&word/g' test.txt
Sed工具使用
例:在文本中查找以new的行,在其行首添加字符串word, ^ 表示起始标识,& 在sed中表示添加
[root@localhost ~]# sed '/new/s/^/word/' test.txt
Sed工具使用
例:修改selinux策略enforcing为disabled,查找/SELINUX/行,然后将其行enforcing值改为disabled、!s表示不包括SELINUX行:
[root@localhost ~]# sed '/SELINUX/s/enforcing/disabled/g' /etc/selinux/config
Sed工具使用
[root@localhost ~]# sed '/SELINUX/!s/enforcing/disabled/g' /etc/selinux/config #!s 取反
Sed工具使用
例:合并上下两行
[root@localhost ~]# sed -n 'N;s/\n/ /p' test.txt
Sed工具使用

  • 微信公众号
  • 这是我的微信公众号扫一扫
  • weinxin
  • 我的QQ技术群
  • 我的QQ技术群扫一扫
  • weinxin
admin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: