例子:
1。
字符串:<ERecList Size="1" Total="2518 ">
要求 :抽取2518这个数字:
实现:echo "<ERecList Size=/ "1/ " Total=/ "2518/ ">" | sed 's/<ERecList Size=/ "1/ " Total=/ "//g' | sed 's// ">//g'
Note:注意转移符号:/ 。 都用红色标出。
2。
字符串(url):http://abc13.EFG.com:4160/graph?node=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/ ****** ’