分类: LINUX
2011-06-14 21:44:36
例子:
1。
字符串:
要求 :抽取2518这个数字:
实现:echo "
Note:注意转移符号:\ 。 都用红色标出。
2。
字符串(url):26125 &offset=0&nbins=1&irversion=601&format=xml
要求: 从以上字符串中抽取:26125
实现:echo $url | sed 's/^.*node= //g' | sed 's/&.*$ //g'
1) ^ :
代表当前行首:^.*node=
表示行首到node=以及他们二者之间包括的所有字符
2)
$ :
代表当前行尾 :
&.*$
表示&到末尾,以及它们之间的所有字符
3) & : 代表其前 pattern 字串
例:sed -e 's/test/& my car/' 替换后变为:test my car
4) /t.*t/d :"." 表示任意字元; "*" 表示当前字元可重任意次 , 它们结合 ".*" 表示两 "t" 字母间的任意
========= 其他=================================================================
常用option
-i 此选项可以自动把修改结果保存到文件中,不然会打印到stdout
-n 就是不把文件打印到标准输出。
-e 可以多个命令一起使用,用它连起来就好了
引号内的命令:
s 替换
d 删除
a 添加
p 打印
r 读入它档内容
w 写资料到它档内
a\ 添加字符串,输入的资料必须从下一行输入
1
在每一行开始处插入5
个空格(
整页偏移)
sed
–
i
’s/^
/ /
’
test.c
2
删除每一行开头的空白(
空格,TAB)
左对齐排列全文
sed -i 's/^ [ t]*//' test.py
^ [ \t]* 的含义为以空格或者TAB 键开始的( 或者是他们的组合) 行
3
在每一含有"baz"
的行中用"bar"
替换(
查找并替换)foo"
sed
–
i
’/baz/s/foo/bar/g
’
4
在每一含有"baz"
的行中用行首加注释
sed – i '/ baz /s/^ /#/g'
5 删除两个字符串之间的行
Sed -i ‘ /abc/,/123/d ’ test.c
Sed -i
‘
2,10d
’
删除2
到10
行
6
在当前行的下一行插入文件
Sed -i ‘ /hello/a\ ****** ’