[转] http://blog.chinaunix.net/uid-20754793-id-177657.html

下面是我学习sed时参照参考书总结的一些常用sed命令,基本上每条语句都进行了调试
1.打印文件的第二行
sed -n '2p' file
2.打印1到3行
sed -n '1,3p' file
3.品配单词用/patten/模式,eg,/Hello/
sed -n '/Hello/'p file
4.使用模式和行号进行品配,在第4行查询Hello
sed -n '4,/Hello/' file
5.配原字符(显示原字符$之前,必须使用\屏蔽其特殊含义)
sed -n '/\$/'p file
上述命令将把file中含有$的行打印出来
6.显示整个文件(只需将范围设置为1到最后于一行)
$代表最后一行
sed -n '1,$p' file
7.任意字符 ,模式/.*/,如/.*ing/匹配任意以ing结尾的单词
sed -n '/.*ing/'p file
8.打印首行
sed -n '1p' file
9.打印尾行
sed -n '$p' file
10.打印行号
  sed -e '/beijing/=' file #整个文件都打印出来,并且匹配行打印了行号。
如果只关心实际行号,使用-n选项。
sed -n '/beijing/=' file
如果只打印行号及匹配行,必须使用两个sed命令,并使用e选项。第一个命令打印模式匹配行,第二个使用=选项打印行号,
格式为sed -n -e '/pattern/p' -e '/pattern/=' file。
sed -n -e '/beijing/p' -e '/beijing/=' file
11.创建sed脚本文件
(1)
#!/bin/sed -f
#filename:append.sed
 /beijing/ a\ #插入beijing之后
"Then suddenly it happend!"

chmod u+x append.sed
./append.sed file将把“Then suddenly it happend!”添加到file中beijing后面的下一行

(2)
#!/bin/sed -f
#filename:append.sed
 /beijing/ i\ #插入beijing之前
"Then suddenly it happend!"

chmod u+x append.sed
./append.sed file将把“Then suddenly it happend!”添加到file中beijing前面一行
12.修改文本
(1)
#!/bin/sed -f
#filename:changed
/beijing/ c\
xi'an       
上述脚本将beijing替换为xi'an
(2)
像插入动作一样,可以使用行号代替模式,两种方式完成相同的功能
#!/bin/sed -f
#filename:changed
4 c\
xi'an
将第四行的内容替换为xi'an
$代表最后一行

13.删除文本
删除第一行;1d意为删除第一行。
sed '1d' file
删除1到3行
sed '1,3d' file
删除最后一行
sed '$d' file
删除包含beijing的行
sed '/beijing/d' file

14.替换
替换命令用替换模式替换指定模式,格式为:
[ address [,address]] s/ pattern-to-find /replacement-pattern/[g p w n]

sed 's/cao/HU/' file #将file中的cao替换为HU,实际上是将所有的cao替换为HU(我实验的时候是这样的)
sed 's/\$//' file #将file中的$用空替换(删除)

要进行全局替换,即替换所有出现模式,只需在命令后加g选项。下面的例子将所有cao替换成hu!。
sed 's/cao/hu/g' file

将替换结果写入一个文件用w选项,下面的例子将cao替换为CAO的替换结果写入文件sed.out:
sed 's/cao/CAO/w sed.out' file

15.使用替换修改字符串
果要附加或修改一个字符串,可以使用( &)命令,&命令保存发现模式以便重新调用
它,然后把它放在替换字符串里面。这里给出一个修改的设计思路。先给出一个被替换模式,
然后是一个准备附加在第一个模式后的另一个模式,并且后面带有&,这样修改模式将放在
匹配模式之前。例如, sed语句s/wrong/"badly"&/p 的结果如下
sed -n 's/wrong/badly &/p' file
There is something badly wrong with the car!

原句是:There is something wrong with the car!
16.将sed结果写入文件命令
格式为:[ address [,address]]w filename
eg:sed '1,2 w fileout' file
文件file输出到屏幕。模式范围即1,2行输出到文件fileout

下面例子中查询模式There,匹配结果行写入文件fileout1。
sed '/There/ w fileout1' file

17.从文件中读取数据
address r filename
创建文件newfile,内容为:
Hello nihao!
Welcome Beijing!
将newfle中的内容加到file中
sed '/car!/ r newfile' file#将newfile中的内容添加显示到file中car!后面
sed -i '/car!/ r newfile' file#将newfile中的内容添加到filefile中的car!后面

18.匹配后退出
-q

sed '/cao.*/q' file#实现匹配后退出

19.处理控制字符
用一个空格替换两个或更多的#符号。
sed 's/##*//g' file
删除所有行首的0
sed 's/^0//g' file

要产生控制字符( ^ M),步骤如下;键入sed s/,然后按住< Ctrl>键和v键,释放v键,再按住^键,并保持< Ctrl>键不动,再释放两个键,最后
按< return>键。下面命令去除行尾^ M字符。
sed -i 's/^^M//g' file

20.处理报文输出
Database    Size(MB)   Data Created
-----------------------------------
GOSOUTH      2048      12/11/08
TRISUD       5643      12/05/09
(2 rows affected)
为了使用上述输出信息(文件名是data.txt)做进一步自动处理,需要知道所存数据库名称,为此需执行以下
操作:
1) 使用s /-*// g删除横线- - - - - -。
2) 使用/^$/ d删除空行。
3) 使用$d删除最后一行
4) 使用1d删除第一行。
5) 使用awk {print $1}打印第一列。
命令如下,这里使用了cat,并管道传送结果到sed命令。
cat data.txt | sed 's/--*//g' | sed '/^$/d' | sed '$d' |sed '1d' |awk '{print $1}'

21.去除行首数字
sed 's/[0-9]//g' data.txt

22附加文本
sed 's/[0-9][0-9]*/& OK/g' data.txt #实现向data.txt中的每行中数字后面加上OK
如:原文是
Database    Size(MB)   Data Created
-----------------------------------
GOSOUTH      2048      12/11/08
TRISUD       5643      12/05/09
(2 rows affected)
125178 before
caojian 23
234 shanghai
执行命令后
Database    Size(MB)   Data Created
-----------------------------------
GOSOUTH      2048 OK      12 OK/11 OK/08 OK
TRISUD       5643 OK      12 OK/05 OK/09 OK
(2 OK rows affected)
125178 OK before
caojian 23 OK
234 OK shanghai

23.从shell中向sed传值
$NAME="It's a good idea"
$REPLACE="excelent"
$NEW=`echo $NAME | sed s/good/$NEW/g" `
$echo $NEW
It's a excelent idea!

sed一些常用命令的更多相关文章

  1. grep,awk和sed的常用命令和语法

    Grep的常用命令语法 1. 双引号引用和单引号引用在g r e p命令中输入字符串参数时,最好将其用双引号括起来.例如:“m y s t r i n g”.这样做有两个原因,一是以防被误解为 s h ...

  2. awk sed grep 常用命令

    文本间隔 在每一行后面增加一空行: sed G sed G v1 >v2 在每一行后面增加两行空行: sed 'G;G' 将第一个脚本所产生的所有空行删除(即删除所有偶数行): sed 'n;d ...

  3. sed基本常用命令

    sed的基本操作 sed 's/a/b/g' 文件a 把文件a中的a修改成b 注意这只是临时的 注:s就是所有的意思,g是缓存区的意思 sed -i 's/a/b/g' 文件a 把文件a中的a修改成b ...

  4. 【sed】常用命令

    替换 替换某一整行 sed '1c hello' test #将第一行替换为hello str1替换为str2 sed 's/^str1.*/str2/' filename #以str1开头 sed ...

  5. [转]sed常用命令总结

    转自:http://blog.chinaunix.net/uid-26963748-id-3249732.html 一.Sed简介 Sed:Stream Editor  流式编辑器 又称行编辑器,每次 ...

  6. Linux常用命令之sed

    标题:sed命令的使用 作用:sed(stream editer)是以行为单位处理文本数据,可以对数据按行进行选取(显示打印).替换.删除和新增等功能. 工作流程:sed是一个流编辑器,它可以对从标准 ...

  7. Linux常用命令之sed(2)

    Sed SED的英文全称是 Stream EDitor,它是一个简单而强大的文本解析转换工具,在1973-1974年期间由贝尔实验室的Lee E. McMahon开发,今天,它已经运行在所有的主流操作 ...

  8. shell常用命令归类整理

    shell 命令整理     bash shell 含有许多功能,因此有许多可用的命令:本文档仅罗列了一些常用命令及其使用频率较高的参数.#本文档仅罗列了一些常用命令及其使用频率较高的参数.#vers ...

  9. Liunx 常用命令

    Liunx 常用命令================================================================================ 1. 远程拷贝文件 ...

随机推荐

  1. JS节流和防抖函数

    一. 实现一个节流函数 // 思路:在规定时间内只触发一次function throttle (fn, delay) {  // 利用闭包保存时间  let prev = Date.now()  re ...

  2. Hadoop学习(7)-hive的安装和命令行使用和java操作

    Hive的用处,就是把hdfs里的文件建立映射转化成数据库的表 但hive里的sql语句都是转化成了mapruduce来对hdfs里的数据进行处理 ,并不是真正的在数据库里进行了操作. 而那些表的定义 ...

  3. 48.QT-网络通信讲解1

    网络概念 MAC地址(硬件地址) 网络IP地址(如192.168.1.101) 网络端口(实现多路通信,用来给不同应用程序来区分使用,范围0~65535,比如浏览网页服务(80端口), FTP服务(2 ...

  4. 使用 PowerShell 远程管理

    要求 PowerShell 版本要求至少是2.0版本以上,目前PowerShell 2.0 支持最低的操作系统版本为Windows XP.本次操作使用的是 PowerShell 5.1 请使用管理员身 ...

  5. 解决跨域session 同步问题

    跨域来源:(前端站点和后端API布署到不同的站点) 解决方案 一.服务端设置 1.配置允许跨域请求 public class BaseAction { /** * 支持跨域请求 * @author f ...

  6. 第十五章 LVM管理和ssm存储管理器使用 随堂笔记

    第十五章 LVM管理和ssm存储管理器使用 本节所讲内容: 15.1 LVM的工作原理 15.2 创建LVM的基本步骤 15.3 实战-使用SSM工具为公司的邮件服务器创建可动态扩容的存储池 LVM的 ...

  7. Selenium+Java - 结合sikuliX操作Flash网页

    前言 前天被一个Flash的轮播图,给玩坏了,无法操作,后来请教了下crazy总拿到思路,今天实践了下,果然可以了,非常感谢! 模拟场景 打开百度地图 切换城市到北京 使用测距工具 测量 奥林匹克森林 ...

  8. (16)ASP.NET Core 通用主机(HostBuilder)

    1.前言 ASP.NET Core应用程序可以配置和启动主机(Host).主机负责应用程序启动和生命周期管理.通用主机用于无法处理HTTP请求的应用程序.通用主机的用途是将HTTP管道从Web主机AP ...

  9. JVM调优之经验

    在生产系统中,高吞吐和低延迟一直都是JVM调优的最终目标,但这两者恰恰又是相悖的,鱼和熊掌不可兼得,所以在调优之前要清楚舍谁而取谁.一般计算任务和组件服务会偏向高吞吐,而web展示则偏向低延迟才会带来 ...

  10. HelloDjango 第 09 篇:让博客支持 Markdown 语法和代码高亮

    作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 为了让博客文章具有良好的排版,显示更加丰富的格式,我们使用 Markdown 语法来书 ...