文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>sed 学习笔记

sed 学习笔记

时间:2010-07-27  来源:wwwmewww

本文全部参考于 RHEL饭醉团伙制作的无码高清版 sed & awk 修订第三版   sed脚本应用
1.对同一文件的多重编辑
2.改变一组文件
3.提取文件的内容
4.编辑工作转移
  sed命令语法
sed [options] [line/address/list]command/pattern/replacement/flags inputfile
/  #-- 界定符
!  #-- 如果包括界定符,可以用!界定符。例:s!/etc/!/home/!g
  [options]
-n #-- 不输出内容
-e #-- 引用命令的,允许sed同时运用多个命令
-f #-- 引用sed脚本文件
  [line/address/list]
n                  #-- n为数字,表示第几行
address            #-- 正则表达式
address1,address2  #-- 正则表达式,表示address1到address2之间的范围
  [command]
格式  #-- [line/address/list]command/pattern/replacement/
a  #-- 追加 "$a\hello",在结尾处添加“hello”
c  #-- 更改 "[address]c\hello",在第一行前插入“hello”行
i  #-- 插入 "1i\hello",在第一行前插入“hello”行
s  #-- 替换 "2s/pattern/replacement/",把replacement替换成pattern
y  #-- 转换 "y/abc/ABC/",把abc转换成ABC
l  #-- 显示看不见的字符,"l"
  格式  #-- [line/address/list]command p  #-- 打印匹配的内容
=  #-- 打印行号
n  #-- next 读取下一行,[address]n
d  #-- 删除,匹配的当前行;例:“/^$/d”删除空行
h  #-- hold,把匹配模式(pattern space)中的内容保留到保留模式(hold space)中
g  #-- get,把保留模式(hold space)中的内容提取到匹配模式(pattern space)中
x  #-- exchange,把保留模式(hold space)中的内容与匹配模式(pattern space)中内容互换
q  #-- 退出,[line/address]q;跟c/c++的break差不多
r  #-- 读取文件,[line/address]r file;最多打开10个
w  #-- 写入文件, [address]w file
  (Branch分支)  #-- 格式 [address]b[label];label=":mylabel",mylabel=最多7个字符
b  #-- 如果匹配-跳转到标签(b mylabel);如果没写标签(b)的话,直接跳转到脚本底部。
(测试命令)  #-- 格式 [address]t[label]
t  #-- 如果匹配并替换-跳转到标签(t mylabel);如果没写标签(t)的话,直接跳转到脚本底部。
  (多行模式)
N  #-- Next,追加下一行;最后一行没有下一行,避免错误用"$!N"
D  #-- Delete,多行删除,其实就是删除2行,需要跟N配合
H  #-- Hold,把匹配模式(pattern space)中的内容(2行)保留到保留模式(hold space)中
G  #-- Get,把保留模式(hold space)中的内容全部(顶部多个换行符\n)提取到匹配模式(pattern space)中
P  #-- Print,打印多行,把2行打印成一行,需要跟N配合
  [pattern]  #-- 用正则表达式表示
\(word\)   #-- word 被标记为\n,n为数字最多9个,参考例2
\n         #-- 换行符
  [replacement]  #-- 用正则表达式表示
&   #-- 引用“pattern”,参考例1
\n  #-- 引用“\(word\)”标记的word,n为数字,参考例2
\   #-- 编写多行的replacement进行替换,参考例3
  例1:原文:“aa bb cc”
sed命令:sed 's/bb/dd & ee/'
结果:“aa dd bb ee cc”
  例2:原文:“aa bb cc”
sed命令:sed 's/\(aa\) bb \(cc\)/\2 \1/'
结果:“cc bb aa”
  例3:原文:“abcde”;
sed命令:“sed 's/c/\
/”
结果:
“ab
  de”

[flags]
n  #-- 数字,匹配第n个匹配,默认为1
g  #-- 应用到全局,如果没有g,则对应每行第一个匹配
p  #-- 打印匹配的内容
W  #-- 把结果输出到文件

sed脚本 -- 就是sed命令的集合
用 -f 来引用脚本
  #n  #-- sed脚本头一行为“#n”的话,按 -n 处理。
分组命令 -- 使用大括号"{}"将一个地址嵌套在另一个地址中,或者在相同的地址上应用多个命令。
[line/address/list]{  #-- {必须在行末,后面不许有空格。
“sed命令集合”
}  #-- 必须以“}”为一行代表一个分组命令结束,一个sed脚本中可以有多个分组命令
    刚学完sed,小小整理一下;等掌握了sed 后再发些使用心得。未完待续
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载