shell脚本 sed工具
sed工具概述(流式编辑器)
非交互,基于模式匹配过滤及修改文本
逐行处理,并将结果输出到屏幕
可实现对文本的输出,增,删,改,查等各种操作
sed流控制:
!:取反操作,根据定址条件取反
n:读下一行,产生隔行,跳行的效果
命令格式解析:
格式一:sed [选项] '编辑指令' 文件
格式二:前置命令|sed [选项] '编辑指令'
常见命令选项:
-n:屏蔽默认输出
-i:直接修改文件内容
-f:使用sed脚本
-e:可指定多个处理动作
-r:启用扩展的正则表达式,若与其他选项一起使用,应作为首选项
-{}:可组合多个命令,以分号分隔
编辑指令指定址符
定址符,即 [地址1],[地址2]
用来指定处理的起,止行数
省略定制符,默认逐行处理全部文本
地址可表示为文本的 "行号" 或者用来匹配的 "/正则表达式/"
sed的基本处理
____________________________________________________________________________________+
|
操作符 用途 指令示例 |
p 打印行 2,4 输出第2,3,4行 2p;4p输出第2行,4行 |
d 删除行 2,4d 删除第2,3,4行 |
s 字符串替换 s/old/new 将每行的第一个old替换为new, |
s/old/new/3 将每行的第三个old替换为new, |
s/old/new/g 将所有old替换为new |
____________________________________________________________________________________+
替换操作的分隔/ 可改用其他字符 如# &等,便于修改文件路劲
sed的文本处理
——————————————————————————————————————————
操作符 用途 指令示例
i 行前插入文本 2iyy 在第二行之前添加文本行 yy
4,7iyy 在第4-7行的每一行前添加文本行
a 行后插入文本 2ayy 在第2行后添加文本
/^xx/ayy 在以xx开头的行之后添加文本
c 替换当前行 2cyy 将第2行的内容修改为yy
——————————————————————————————————————————
使用sed脚本
复杂操作可存为脚本,通过-f调用
格式:sed -f 操作脚本 文件
[root@ceshiji ~]# vim /root/test.sed
s/pang/&jing/
s/[0-9]//g
[root@ceshiji ~]# sed -f /root/test.sed a.txt
示例:
[root@ceshiji ~]# sed '/IPADDR/c IPADDR=192.168.4.40' /etc/sysconfig/network-scripts/ifcfg-eth0(修改ip)
[root@ceshiji ~]# sed '2i xxx' a.txt (增加)
1
xxx
2
3
[root@ceshiji ~]# sed '1,3d' a.txt (删除1行3行)
4
5
6
[root@ceshiji ~]# sed 's/4/xx/1' a.txt (替换)
1
2
3
xx
5
6
[root@ceshiji ~]# sed -r 's/(....)....(...)/\1***\2' a.txt
文件导入导出
基本动作:
-r:动作应结合-i选项才会存入,否则只输出
-w:动作以覆盖的方式另存为新文件
示例
[root@ceshiji ~]# sed '3r b.txt' a.txt 在第三行下方插入文件b.txt
[root@ceshiji ~]# sed '4,7r b.txt' a.txt 在第4-7每行后插入文件b.txt
[root@ceshiji ~]# sed '3w c.txt' a.txt将第三行另存为c.txt
sed复制剪切
模式空间
存放当前处理的行,将处理结果输出
若当前行不符合处理条件,则原样输出
处理完当前行再读入下一行来处理
保持空间
作用类似于剪切板
默认存放一个空行(换行符\n)
基本动作:
-H;模式空间——[追加]——》保持空间
-h;模式空间——[覆盖]——》保持空间
H,h———复制
-G:保持空间——[追加]——》模式空间
-g:保持空间——[覆盖]——》模式空间
G,g——粘贴
综合实例:
根据/etc/passwd提取密码串
找到使用bash作登陆shell的本地用户
列出这些用户的shadow密码记录
按每行 用户名——》密码记录 保存结果
#!/bin/bash
user=`sed -n '/bash$/s/:.*//p' /etc/passwd`
for i in $user
do
pass=`grep "$i" /etc/shadow`
pass=${pass#*:}
pass=${pass%%:*}
echo "$ipass$pass"
done
————————————————————————————————————————————————————————
shell脚本 sed工具的更多相关文章
- linux运维自动化shell脚本小工具
linux运维shell 脚本小工具,如要分享此文章,请注明文章出处,以下脚本仅供参考,若放置在服务器上出错,后果请自负 1.检测cpu剩余百分比 #!/bin/bash #Inspect CPU # ...
- 远程shell脚本执行工具类
/** * 远程shell脚本执行工具类 */public class RemoteShellExecutorUtils { private static final Logger logger = ...
- Linux之Shell 脚本加密工具-shc
Much effort, much prosperity. 为什么要加密Shell脚本呢?当然是为了安全! 可能脚本里面涉及到密码之类的就需要进行加密了 一.下载安装shc工具 要保护自己编写的she ...
- Makefile Shell 脚本;sed命令
1. 在Makefile中想使用shell脚本,需要添加"@"符号,例如: @if [ -d xxx ]; then \ //-d 判 ...
- shell脚本 awk工具
awk工具概述awk编程语言/数据处理引擎基于模式匹配检查输入文本,逐行处理并输出通常在shell脚本中,或取指定的数据单独用时,可对文本数据做统计 命令格式格式一:awk [选项] '[条件]{编辑 ...
- shell 脚本sed替换文件中某个字符串
有些大文件,特别的大.有几百兆,甚至更大. 用文本编辑器打开十分的费劲,电脑都卡死了. 想替换其中的字符串,很麻烦. 这个时候有了shell,简直强大到爆炸! # du -h user.sql 304 ...
- shell脚本sed awk
删除第一行 sed '1d' test.txt 假装执行 sed -i '1d' test.txt 执行 从第二行删除到行尾 sed '2,$d' test.txt sed -i '2,$d' tes ...
- shell脚本sed的基本用法
sed 我们首先准备了一个测试文件 1. s 替换 将文件中的This替换cyy 在替换的时候如果加入了 -i 选项就会真的替换,但是只会替换每一行的第一个 -n 和 -p 一起使用表示的是打印那些 ...
- shell脚本——sed命令
sed 命令 作为行编辑器,对文件进行编辑(以行为单位进行编辑) sed编辑文件,却不改变原文件 sed工作原理: 指定一个文本文件,依次读取文本文件中的每行内容,读取到模式空间中,在模式空间中进行匹 ...
随机推荐
- redis info详解
INFO 以一种易于解释(parse)且易于阅读的格式,返回关于 Redis 服务器的各种信息和统计数值. 通过给定可选的参数 section ,可以让命令只返回某一部分的信息: server 部分记 ...
- ssh免秘钥登录
简介 SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH 是目前较可靠,专为远程 ...
- excel中的数据导出为properties和map的方法
在做项目的过程中,经常需要处理excel数据,特别是和业务人员配合时,业务人员喜欢使用excel处理一些数据,然后交给我们技术人员进行程序处理.利用POI读取写入excel数据,是经常使用的一个情景. ...
- 细数Python Flask微信公众号开发中遇到的那些坑
最近两三个月的时间,断断续续边学边做完成了一个微信公众号页面的开发工作.这是一个快递系统,主要功能有用户管理.寄收件地址管理.用户下单,订单管理,订单查询及一些宣传页面等.本文主要细数下开发过程中遇到 ...
- javascipt中的DOM对象
1.HTML中DOM对象的概念 HTML Document Object Model(文档对象模型) HTML DOM定义了访问和操作HTML文档的标准方法 HTML DOM把HTML文档呈现为带有元 ...
- CSS中的选择器之类选择器和id选择器
1.css中的选择器: 1.类选择器,又叫class选择器 2.id选择器 3.html元素选择器(又叫标签选择器) 4.通配符选择器 5.伪类选择器 6.组合选择器(多元素选择器,子元素选择器,后代 ...
- python可用ORM之Pony
Pony是Python的一种ORM,它允许使用生成器表达式来构造查询,通过将生成器表达式的抽象语法树解析成SQL语句.它也有在线ER图编辑器可以帮助你创建Model. 示例分析 Pony语句: sel ...
- java线程池原理及实现方式
线程池的定义 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务.线程池线程都是后台线程 为什么要使用线程池 1.减少在创建和销毁线程上所花的时间以及系统资源的开 ...
- BZOJ 1370: [Baltic2003]Gang团伙 [并查集 拆点 | 种类并查集WA]
题意: 朋友的朋友是朋友,敌人的敌人是朋友:朋友形成团伙,求最多有多少团伙 种类并查集WA了一节课,原因是,只有那两种关系才成立,诸如朋友的敌人是朋友之类的都不成立! 所以拆点做吧 #include ...
- User Parameters(用户参数)
User Parameters(用户参数),这个是整个zabbix的重点 Zabbix有很多内置的itemkey,但是这些key都是由Zabbix定义好的比较通用的监控项的实现, 如果我们自己想实 ...