shell编程四剑客之sed

shell编程四剑客之sed

目录:
1、opion(选项)常用参数如下
2、常用SED工具企业演练案列

SED是一个非交互式文本编辑器,它可对文本文件和标准输入进行编辑,标准输入可以来自键盘输入、文本重定向、字符串、变量,甚至来自于管道的文本,与VIM编辑器类似,它一次处理一行

  • 内容,Sed可以编辑一个或多个文件,简化对文件的反复操作、编写转换程序等。
    在处理文本时把当前处理的行存储在临时缓冲区中,称为“模式空间”,紧接着用SED命令处理缓冲区中的内容,处理完成后把缓冲区的内容输出至屏幕或者写入文件。
  • 逐行处理直到文件末尾,然而如果打印在屏幕上,实质文件内容并没有改变,除非你使用重定向存储输出或者写入文件

其语法参数格式为:

sed    [-options]     [‘Commands’]    filename
  • sed工具默认只将处理结果打印到界面上,但并没有对文件内容进行修改,需要加-i参数即对文件彻底修改

其中opion(选项)常用参数如下:

x                   		#x为指定行号;
x,y                 		#指定从x到y的行号范围;
/pattern/           		#查询包含模式的行;
/pattern/pattern/   		#查询包含两个模式的行;
/pattern/,x         		#从与pattern的匹配行到x号行之间的行;
x,/pattern/         		#从x号行到与pattern的匹配行之间的行;
x,y!                		#查询不包括x和y行号的行;
r                			#从另一个文件中读文件;
w                			#将文本写入到一个文件;
y                			#变换字符;
q             				#第一个模式匹配完成后退出;
l                			#显示与八进制ASCII码等价的控制字符;
{}              			#在定位行执行的命令组;
p                			#打印匹配行;
=                			#打印文件行号;
a\              			#在定位行号之后追加文本信息;
i\              			#在定位行号之前插入文本信息;
d                			#删除定位行;
c\              			#用新文本替换定位文本;
s                			#使用替换模式替换相应模式;
n                			#读取下一个输入行,用下一个命令处理新的行;
N                          #将当前读入行的下一行读取到当前的模式空间。

常用SED工具企业演练案列:(PS:删除不加-n参数)

1、替换jfedu.txt文本中old为new:
sed -e 's/old/new/g' jfedu.txt
2、打印jfedu.txt文本第一行至第三行:
sed -n '1,3' jfedu.txt
3、打印jfedu.txt文本中第一行与最后一行:
sed -n '$1,$&' jfedu/txt
4、删除jfedu.txt第一行至第三行、删除某匹配行至最后一行:
sed '1,3d' jfedu.txt
sed '/sshd/,$d' jfedu.txt
5、删除jfedu.txt最后1行:
sed '$d' jfedu.txt
6、删除jfedu.txt最后6行及删除最后一行:
for i in `seq 1 6`;do sed -i '$d' jfedu.txt;done
sed '$d' jfedu.txt
7、在jfedu.txt查找jfedu所在行,并在其下一行添加word字符,a表示在其下一行添加字符串:
sed /jfedu/aword jfedu.txt
8、在jfedu.txt查找jfedu所在行,并在其上一行添加word字符,i表示在其上一行添加字符串:
sed /jfedu/iword jfedu.txt
9、在jfedu.txt查找以test结尾的行尾后再添加上字符串word,$表示结尾标识,&在Sed中表示添加:
sed 's/test$/&word/g' jfedu.txt
10、在jfedu.txt查找www的行,在其行首添加字符串word,^表示起始标识,&在Sed中表示添加:
sed '/www/s/^/&word/' jfedu.txt
11、多个sed命令组合,使用-e参数:
sed -e '/www.jd.com/s/^/&1./' -e 's/www.jd.com$/&./g' jfedu.txt
12、多个sed命令组合,使用分号“;”分割:
sed '/www.jd.com/s/^/&1./;s/www.jd.com$/&./g' file.txt
13、Sed读取系统变量,变量替换:
WEB=www.jd.com
sed "s/www.tb.com/$WEB/g" file.txt
14、修改Selinux策略enforcing为disabled,查找/SELINUX/行,然后将其行enforcing值改成disabled、!s表示不包括SELINUX行:
sed -i '/SELINUX/s/enforcing/disabled/g' /etc/selinux/config
sed -i '/SELINUX/!s/enforcing/disabled/g' /etc/selinux/config
15、合并上下两行,也即两行合并:一个N并用";"隔开表示二合一,多则写多个N;
sed 'N;s/\n/ /' jfedu.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值