全部博文(2065)
分类: LINUX
2010-01-26 16:48:44
Linux中SED使用
[整理人:hkebao@126.com 整理时间:
整理好SED然后整理好一下有关于常用的操作命令
要注意sed并不与初始化文件打交道,它操作的只是一个拷贝。如果没有重定向到一个文件就输出到屏幕。
因为它是一个非交互性编辑器,必须通过行号或正则表达式指定要改变的文本行。
它同时也是一个非常重要的文本过滤工具。或与其他的命令结合通过使用管道就可以相结合。
10.2 调用sed
调用的方式有三种:在命令行键入、将SED命令插入脚本文件然后调用SED、将SED命令插入脚本文件并使SED脚本可执行。
一、调用SED命令行格式为:
Sed [选项] sed命令 输入文件 [带上选项 与命令]
如果是在命令行使用的时候,实际命令要加单引号。SED也允许加双引号。
二、使用SED脚本。格式为:
Sed [选项] –f sed 脚本文件 输入文件
SED选项如下:
N 不打印:SED不写编辑行到标准输出。缺省是打印所有行 P命令可以打印编辑行
C 下一命令是编辑命令。
F 如果正在调用SED脚本文件,可以使用此选项。
如果要改动保存过的内容,就要将输出重定向到一个文件。
例如 sed ‘some-sed’ input-file > outfile
如果正则匹配出来的结果比较满意就可以将其重定向输出到一个外部文件
缺省是从第一行开始。有两种方式定位文本
1、 使用行号,可以是简单的一个数字或是一个行号范围
2、
使用正则表达式 (这种情况比较居多的。就是如何构造一些复杂的正则表达式出来)
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、 替换night为NIGHT 首先查询模式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的后三个字母