文本三剑客之sed

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

1
2
3
4
5
6
7
8
9
举例:
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
2
3
4
5
6
7
8
9
10
11
12
举例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查询是可以直接调用变量,注意必须用“ ”号或者俩个双引号,单引号不识别变量。

 

 

本文作者:twistfate123

本文链接:https://www.cnblogs.com/trist-commot/p/17094342.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   twistfate123  阅读(17)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.