首页 > 其他分享 >文本三剑客之sed

文本三剑客之sed

时间:2023-02-19 14:33:39浏览次数:49  
标签:选项 表示 打印 sed 内容 文本 替换 三剑客

一、文本三剑客之sed
1、基本用法
sed [选项]... '{自身脚本语法};....' [input file...]

举例:
seq 5 |sed #生成1-5数字传给sed
#该格式报错,基本格式中的'{自身脚本语法}'不可以不写,可以写空则是默认打印全部内容如下
seq 5 | sed ''
1
2
3
4
5

  

sed工作原理

 

 


2、sed脚本语法及命令

语法结构
sed [选项] '操作' 参数
sed [选项] -f scriptfile 参数
常见的选项

-e 或 --expression 表示用指定命令或者脚本来处理输入的文本文件。
-f 或 --file  表示用指定的脚本文件来处理输入的文本文件。
-h 或 --help  显示帮助。
-n、--quiet 或 silent  表示仅显示处理后的结果。
-i.bak  直接编辑文本文件。
-r,-E  使用扩展正则表达式。
-s  将多个文件视为独立文件,而不是单个连续的长文件流。

 

 

 

 

 

 

 

 

3、sed的查找替换使用
格式:sed '/可使用正则表达式选择范围/'s/查找内容/替换内容/g g表示全文,固定格式的///可以用###等符号替换

注意:查找内容可使用正则表达式,替换内容不可使用正则表达

 

p 将内容打印到屏幕,使用时关闭自动打印功能,-n选项

 

 

 

q 到指定的内容即退出,例如打印到第三行直接退出

d 删除指定内容

a 在指定位置添加内容

c 替换指定内容

 

 

 

4、后向引用
( )内的按顺序标为123 ,引用时\1调用第一个()的内容,\n表示调用第n个()的内容。

.*表示任意长度字符不管是什么字符

举例1:取ip地址
ifconfig ens33 |sed -nr 's/.*inet (.*) netmask.*/\1/p'
#查看ens33的网卡信息传给sed处理,-n选项关闭自动打印,-r选项开启扩展正则表达式
's///'查找替换标准格式,.*inet 表示以inet为止的前面所有字符 (.*) 括号表示使用反向引用
.*表示该处的任意字符 netmask.*表示以netmask开头后面的所有字符。\1表示反向引用第一个()的
内容,p表示打印出来
192.168.30.11 #打印结果
举例2:
echo abc123XYZ | sed -nr 's/(abc)(123)(XYZ)/\3\2\1/p'
#打印abc123XYZ传给sed处理变成XYZ123ABC,-n选项关闭自动打印,-r选项开启扩展正则表达式
's///'查找替换标准格式。三个()括起来的内容分别表示元素123,调用时改变调用顺序打印即可改变内容顺序
XYZ123abc #打印结果

  

 

 

 


5、变量
使用sed查询是可以直接调用变量,注意必须用“ ”号或者俩个双引号,单引号不识别变量。

 

 

标签:选项,表示,打印,sed,内容,文本,替换,三剑客
From: https://www.cnblogs.com/trist-commot/p/17094342.html

相关文章