sed 入门
来源:互联网 发布:java基础入门课后笔记 编辑:程序博客网 时间:2024/06/05 14:44
sed 是 stream editor(流编辑器)的缩写。它能够完美配合正则表达式使用。sed命令众所周知的一个功能是文本的替换。
1、sed可以替换给定文本中的字符串。它可以配合正则表达式来进行匹配:
$ sed ' s/pattern/replace_string/ ' file
或者
$ cat file | sed sed ' s/pattern/replace_string/ ' //这个命令从stdin中读取输入
使用 -i 选项可以将替换结果应用于源文件。一般在进行替换后利用重定向来保存文件。
$ sed ' s/pattern/replace_string/ ' file > newfile
用新文件来替换源文件:$ mv newfile file
也可以用一行命令来完成:
$ sed -i ' s/pattern/replace_string/ ' file
sed ' s/pattern/replace_string/ ' file 可以将每行中第一处匹配样式的内容替换掉,要想把所有符合的字符都替换掉,需要在命令尾部加上参数 g,如下
sed ' s/pattern/replace_string/g ' file
后缀/g表示sed会替换每一处匹配。
当不需要每处替换时,可以选用/Ng来选择从第N处开始替换,如下:
sed ' s/pattern/replace_string/Ng' file
$ echo hello hello hellohello | sed 's/hello/HELLO/2g'
$ hello HELLO HELLOHELLO // 输出结果
字符/ 在sed中起到定界符作用,我们也可选用任意定界符
sed ' s:pattern:replace_string:g '
sed ' s|pattern|replace_string|g'
当定界符出现在要匹配的样式中时则需要用前缀 \ 来对其转义:
sed ' s;he\;llo;replace_string; '
2、sed 命令包含多个可用于对文本处理的选项。将这些选项已合理的顺序组合,可以在一行命令中解决很多复杂的问题。如下:
a、移除空白行:
空白行可用'^$'进行匹配
$ sed '/^$/d' file
b、已匹配字符串标记(&)
在sed中,用&标记匹配样式的字符串,就能够在替换字符串时使用已匹配的内容。
$ echo this is an example | sed 's/\w\=/[&]/g'
$ [this] [is] [an] [example]
ps: \w为 正则表达式匹配字符(Perl风格的正则表达式),但是下表中的字符并不是所有的工具都支持
利用正则表达式\w\+匹配一个单词,然后用 [ & ] 替换它。&对应于之前所匹配到的单词。
c、子串匹配标记 \1
&代表匹配给定样式的字符串。我们也可以匹配给定样式中的其中一部分。
$ echo this is digit 7 in a number | sed ' s/digit \([0-9]\)/\1/'
$ this is 7 in a number
上述命令将digit 7 替换为7。样式中匹配到的子串是7.
$ echo seven EIGHT | sed 's/\([a-z]\+\) \([a-z]\+\)/\2 \1/'
$ EIGHT seven
([a-z]\+) 匹配第一个单词,([a-z]\+) 匹配第二个单词。 \1和 \2用来引用它们。这种引用被称为后向引用。 在替换部分,它们的次序被更改为\2 \1,因此结果就呈现出逆序的形式。
d、组合多个表达式
利用管道组合多个sed命令。
$ sed 'expression' | sed 'expression1'
等价于:
$ sed 'expression; expression1'
e、引用
sed表达式通常用单引号来引用。不过也可以使用双引号。双引号会通过对表达式求值来对其进行扩展。
如:
$ text=hello
$ echo hello world | sed "s/$text/HELLO/"
$ HELLO world
$text 求值的结果是hello
- sed & awk --SED 入门
- sed 入门
- sed入门
- GNU Sed - Sed替换入门
- sed用法入门
- SED 入门【转】
- awk & sed 入门
- sed,awk入门
- 一分钟sed入门
- sed命令入门
- awk sed 的入门记录
- sed命令的快速入门
- linux 下sed快速入门
- 【shell语言】【sed】之 入门
- linux sed命令快速入门
- sed命令入门及进阶
- sed教程入门与实例练习(一)
- sed教程入门与实例练习(二)
- sql 统计
- java复制文件或文件夹
- setsockopt()用法(参数详细说明)
- hdu 1228 A+B
- StarUML中InteractionOperation的画法
- sed 入门
- 黑马程序员-交通灯管理系统
- WPF在Windows XP下的一个兼容问题
- 基于maven-cargo-plugin 的tomcat7.x热部署记录
- linux 更改用户权限
- AndEngine中移动背景(上下移动、斜着移动)
- 在Tomcat中配置虚拟主机
- Objective-C中的protocol用法
- 一些看英语文档的笔记