测试常用linux命令之sed篇
一、sed命令
可以放在单独的脚本文件中执行:sed -f script1 data1
多条命令也可以用{}括起来
sed可以进行文本的替换,删除,行添加,打印等。采用
sed [address]{command1
command2} 文件名的形式
其中adress可以有两种形式:1)行的数字范围。2)用文本模式来过滤出某行。
文本替换:sed '2,$s/dog/cat/g' a.txt 通过模式查找: sed '/hello/s/dog/cat'
行删除: sed '3d' a.txt sed '/number/d' a.txt
插入和附件文本:sed '5i\new line' a.txt sed '3o\new line' a.txt
注意这些修改都是基于流的,如果想要在源文件上修改,需要加上-i选项。
打印: sed -n '3,5p' 基于文本匹配的 sed -n '/pattern/p'
sed的一些高级知识
n;提取文本的下一行,代表从文件流的下一个文本行进行处理
N;代表将下一行加到已经在模式空间的文本上
自己使用的一直是sed命令的模式空间,其实它还有一个保持空间
h:将模式空间复制到保持空间
H:将模式空间附加到保持空间
g:将保持空间复制到模式空间
G:将保持空间附件到模式空间
x:交换模式空间和保持空间的内容
相当于将一部分后面需要的内容先保存,最后再用g,G命令将数据从保持空间复原到模式空间。
其他:!代表符合特定模式的不怎么怎么着。。。
三、具体案例
#!/bin/sh
#该脚本用来实现统计一个目录下所有的文件个数 all_count=
for filePath in `echo $PATH | sed 's/:/ /g'`
do
count=`ls $filePath | wc -l`
echo "$filePath":"$count"
all_count=$[$all_count+$count]
done
echo "all_count:"$all_count
统计路径下的文件个数
sed -i '/^$/d' a.txt
利用sed去除空行
cat a.txt | sed 'N;s/\n/ /g'
利用sed实现多行合并
cat a.txt | sed '/line2/{N;s/\n/ /g}'
利用sed实现特定行的合并
之前自己一直采用的cat -n的方式,这种方法自然可以,只不过行号的格式往往不是想要的
sed '=' a.txt | sed 'N;s/\n/\t/g'
利用sed为行添加行号
sed -i 's/^ //g' a.txt
利用sed去除段前的空格
cat a.txt | sed '/./,/^$/!d'
利用sed将多个空白行合并为一个
cat a.txt | sed '/./,/$/!d'
(从有文字的行到最后一行,都不删除)
利用sed删除开头的空白行
cat a.txt | sed 's/<[^>]*>//g'
需要忽略任何嵌入原始标签的大于号
利用sed去除html标签
最新文章
- 游戏AI系列内容 咋样才能做个有意思的AI呢
- Win7下VS2008破解方法
- AutoMapper之ABP项目中的使用介绍
- NOIP2003pj栈[卡特兰数]
- MacOS长按无效问题
- 关于小组所要做的APP的想法
- 使用Json.Net处理json序列化和反序列化接口或继承类
- swift 基于SDK8.0 获取当前时间
- Mysql中将查询出来的多列的值用逗号拼接
- web服务器与应用服务器
- C语言在单片机开发中的应用
- SharePoint RBS 安装(集成Office Web Apps)
- CSS边框(圆角、阴影、背景图片)
- ubuntu网桥设置
- How to fix “HTTP Status Code 505 – HTTP Version Not Supported” error?--转
- ArcMap中属性字段计算器(Field Calculator)的使用技巧
- 一、使用Navicat连接阿里云服务器宝塔面板里创建的数据库
- 实现左边div固定宽度,右边div自适应撑满剩下的宽度的布局方式:
- PAT 1004 成绩排名
- python爬虫 bs4_4select()教程
热门文章
- Git_初步了解
- java学习笔记(5)多线程
- python 中if __name__ = &#39;__main__&#39; 的作用
- 自己对GIS的思考
- Wiki 安装部署
- 一、doT.js使用笔记
- 一、模型验证CoreWebApi 管道方式(非过滤器处理)2(IApplicationBuilder扩展方法的另一种写法)
- mariadb数据库简介
- jmeter之Ramp-up Period(in seconds)
- php扩展安装,指定新的openssl