Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29423723
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: LINUX

2010-01-26 16:48:44

LinuxSED使用

[整理人:hkebao@126.com  整理时间:2010-1-14]

整理好SED然后整理好一下有关于常用的操作命令

要注意sed并不与初始化文件打交道,它操作的只是一个拷贝。如果没有重定向到一个文件就输出到屏幕。

因为它是一个非交互性编辑器,必须通过行号或正则表达式指定要改变的文本行。

它同时也是一个非常重要的文本过滤工具。或与其他的命令结合通过使用管道就可以相结合。

10.2 调用sed

调用的方式有三种:在命令行键入、将SED命令插入脚本文件然后调用SED、将SED命令插入脚本文件并使SED脚本可执行。

一、调用SED命令行格式为:

Sed [选项] sed命令  输入文件                           [带上选项  与命令]

如果是在命令行使用的时候,实际命令要加单引号。SED也允许加双引号。

二、使用SED脚本。格式为:

Sed [选项] –f      sed 脚本文件     输入文件

SED选项如下:

N      不打印:SED不写编辑行到标准输出。缺省是打印所有行  P命令可以打印编辑行

C       下一命令是编辑命令。

F       如果正在调用SED脚本文件,可以使用此选项。

10.2.1 保存SED输出

如果要改动保存过的内容,就要将输出重定向到一个文件。

例如 sed ‘some-sed’ input-file > outfile

如果正则匹配出来的结果比较满意就可以将其重定向输出到一个外部文件

10.2.2 使用SED在文件中查询文本的方式

缺省是从第一行开始。有两种方式定位文本

1、   使用行号,可以是简单的一个数字或是一个行号范围

2、   使用正则表达式                    (这种情况比较居多的。就是如何构造一些复杂的正则表达式出来)

10.2.3 基本的sed编辑命令     示例 sed –e  ‘/music/’= quote.txt  这些命令一定要用习惯的!

P                打印匹配行

=                显示文件行号                      

a\                在定位行号后附加新文本信息

i\                 在定位行号后插入新文本信息

d                 删除定位行

c\                用新文本替换定位文本

s                 使用替换模式替换相应模式

r                 从另一文件中读文本

w                写文本到一个文件

q                 第一个模式匹配完成后推出或立即推出

l                  显示与八进制ASCII代码等价的控制字符

{}               在定位行执行的命令组

N                从另一个文件中读文本下一行,并附加在下一行

G                将模式2粘贴到/pattern n/

Y                传送字符

N                延续到下一输出行

 

10.3 sed 正则表达式

如果要定位一特殊字符必须要用\        屏闭其特殊含义。

 

10.4 基本的编程举例

1. 使用P显示行

sed -n '2p' quote.txt    

加上一个选项-n          显示打印定位(匹配)行。

2. 打印范围

sed -n '1,3p' quote.txt            表示能够打印1到三行

PS:其中的选项是-n  其中的命令是p          注意区别

3 打印模式

可以写上模式可以打印一行

sed -n '/Neave/'p quote.txt              表示要打印匹配这个字符的行出来!

4 使用模式与行号进行查询

sed -n '4,/The/'p quote.txt               表示 只匹配第四行的 而且模式为The

5. 匹配元字符

如果要匹配特殊字符可以用\ 将其进行转义。模式为/\$/p

sed -n '/\$/'p quote.txt                     可以匹配包含$的行

6. 显示整个文件

sed -n '1,$'p quote.txt                     表示从第一行到未尾全部打印

7. 任意字符

匹配任意字母,后跟任意字母的0次或多次重复,并以ing结尾。模式为/.*ing/

sed -n '/.*ing/'p quote.txt                

PS: 其中的-n 表示选项      p       表示命令为打印

8、首行

要打印文件第一行,可以用行号:

sed -n '1p' quote.txt

9、未尾行

sed -n '$p' quote.txt

它的格式为: sed   选项  模式命令     输入文件

 

11 附加文本

要想附加文本,可以使用符号a\                   可以将指定文本一行或多行附加到指定行。如果不指定文本放置位置

SED默认是会放在每一行后面。附加文本时不能指定范围,只允许一个地址模式。

 

12 创建SED脚本文件

 

#!/bin/sed -f

/company/ a\                                   #表示在指定的模式后面追加 指定的文本内容值

Then suddenly it happend.

 

#!/bin/sed -f

4 i\

Welcome to sed                               #表示在指定的行数之前 插入指定的文本

#!/bin/sed -f

/honeysuckle/ c\                                        #表示在匹配到的行中将内容修改过来

The office hello

 

sed '$d' quote.txt                                      #表示删除第未尾行

 

16 替换文本

替换命令可以用替换模式替换指定的模式。对指定的模式作一个替换操作!

格式为:

[address[,address]] s/ pattern-to-find  / replacement-pattern/[g p w n]

其中的选项 g    p       w      n分别表示

g              如果用了g则表示是全局替换所有出现的模式

p              如果加了p 则使-n     无效。-n   就不打印输出结果

w              文件名       使用此选项将输出定向到一个文件     即写文件输出

示例:

1、   替换nightNIGHT 首先查询模式night然后用文本NIGHT替换掉

sed 's/floor/NIGHT/' quote.txt                        其中的地址项是可以省略的!

 

17 SED结果写回文件的命令

以上的操作都是仅对输出缓冲的东西操作。并没有实际对文件本身有所操作

格式:[address[,address]] w filename

示例:sed '1,2 w newfile' quote.txt  表示将 1-2 行的内容写入到新文件

 

快速的一行命令参考: ([] 表示空格,[ ] 表示tab键)

       ‘s/\.$//g’                                  删除以句点结尾行

       ‘-e /abcd/d’                             删除包含abcd的行

       ‘s/[][][]*/[]/g’                         删除一个以上空格,用一个空格代替

       ‘s/^[][]*//g’                            删除行首空格

       ‘/^$/d’                                    删除空行

       ‘s/^.//g’                                   删除第一个字符

       ‘s/COL\(…\)//g’                     删除紧跟COL的后三个字母


阅读(869) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~