一、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标签

最新文章

  1. 游戏AI系列内容 咋样才能做个有意思的AI呢
  2. Win7下VS2008破解方法
  3. AutoMapper之ABP项目中的使用介绍
  4. NOIP2003pj栈[卡特兰数]
  5. MacOS长按无效问题
  6. 关于小组所要做的APP的想法
  7. 使用Json.Net处理json序列化和反序列化接口或继承类
  8. swift 基于SDK8.0 获取当前时间
  9. Mysql中将查询出来的多列的值用逗号拼接
  10. web服务器与应用服务器
  11. C语言在单片机开发中的应用
  12. SharePoint RBS 安装(集成Office Web Apps)
  13. CSS边框(圆角、阴影、背景图片)
  14. ubuntu网桥设置
  15. How to fix “HTTP Status Code 505 – HTTP Version Not Supported” error?--转
  16. ArcMap中属性字段计算器(Field Calculator)的使用技巧
  17. 一、使用Navicat连接阿里云服务器宝塔面板里创建的数据库
  18. 实现左边div固定宽度,右边div自适应撑满剩下的宽度的布局方式:
  19. PAT 1004 成绩排名
  20. python爬虫 bs4_4select()教程

热门文章

  1. Git_初步了解
  2. java学习笔记(5)多线程
  3. python 中if __name__ = &#39;__main__&#39; 的作用
  4. 自己对GIS的思考
  5. Wiki 安装部署
  6. 一、doT.js使用笔记
  7. 一、模型验证CoreWebApi 管道方式(非过滤器处理)2(IApplicationBuilder扩展方法的另一种写法)
  8. mariadb数据库简介
  9. jmeter之Ramp-up Period(in seconds)
  10. php扩展安装,指定新的openssl