Linux脚本攻略学习笔记13
来源:互联网 发布:东莞网络推广公司 编辑:程序博客网 时间:2024/05/01 16:13
使用sed进行文本替换
sed是流编辑器的缩写,他是文本处理中不可或缺的工具,能够配合正则表达式使用,功能不同凡响,sed命令众所周知的一个用法是进行文本替换。
(1)sed可以替换给定文本中指定的字符串
$sed 's/pattern/replace_string/' file或者
$ cat file | sed 's/pattern/replace_string/'该命令从stdin中读取输入。
在默认情况下,sed只会打印替换后的文本。如果需要在替换的同时保存更改,可以使用-i选项,可以将替换结果应用于源文件。很多用户在进行替换之后,会借助重定向来保存文件:
$ sed 's/text/replace/' file >newfile$ mv newfile file其实只需要一行命令就可以搞定,例如:
$sed -i 's/text/replace/' file之前看到的sed命令会将每一行中 每一处符合模式的内容都替换掉。但是如果要替换所有的内容,我们需要在命令尾部加上参数g,其方法如下:
$sed 's/pattern/replace_string/g' file后缀/g意味着sed会替换每一处匹配。但是有时候我们只需要从第n处匹配开始替换。对此,可以使用/Ng选项。
可以看下面的例子:
字符/在sed中被作为定界符使用。我们可以像下面一样使用任意的定界符:
$ sed 's:text:replace:g'$ sed 's|text|replace|g'当定界符出现在样式内部时,我们必须使用前缀\对它进行转义:
$ sed 's|te\|xt |replace|g'
\|是一个出现在样式内部并经过转义的定界符。(2)补充内容
sed命令包含大量可用于文本处理的选项。将这些选项以合理的次序组合,可以只用一行命令就解决很多复杂的问题。让我们看看这些选项。
(a) 移除空白行
用sed移除空白行不过是小菜一碟,空白行可以用正则表达式^$进行匹配:
$ sed '/^$/d' file
/pattern/d会移除匹配样式的行。
在空白行中,行尾标记紧随着行首标记。
(b)直接在文件中进行替换
$ sed 's/pattern/replacement/' -i filename例如,使用指定的数字替换文件中所有3位数的数字:
首先,我们有如下文件:
则上述实现为:
上面的单行命令替换了所有的3位数字,正则表达式\b[0-9]\{3\}\b用于匹配3位数字. [0-9]表示数位取值范围,也就是从0~9. {3}表示匹配之前的字符3次。\{3\}中的\用于转义{和}。\b表示单词边界。
(c)已匹配字符串标记&
例如
正则表达式\w\+匹配每一个单词,然后用[&]替换它。&对应于之前所匹配到的单词。
阅读全文
0 0
- Linux脚本攻略学习笔记13
- Linux Shell脚本攻略学习笔记
- Linux Shell 脚本攻略 学习笔记-1
- Linux shell 脚本攻略 学习笔记-2
- Linux shell 脚本攻略 学习笔记-3
- linux shell 脚本攻略 学习笔记-4
- Linux shell 脚本攻略 学习笔记-5
- Linux shell 脚本攻略 学习笔记-6
- Linux shell 脚本攻略 学习笔记-7
- Linux shell 脚本攻略 学习笔记-8
- Linux shell 脚本攻略 学习笔记-9
- 《Linux shell脚本攻略》学习笔记
- Linux shell 脚本攻略学习笔记1
- Linux shell 脚本攻略学习笔记2
- Linux shell脚本学习攻略笔记3
- Linux shell 脚本攻略学习笔记4
- Linux shell 脚本攻略学习笔记5
- Linux shell 脚本攻略学习笔记6
- 从placekitten网页上上抓图片
- 引用 爱让我站在这里
- 幽默与笑话精选
- 团结就是力量
- 英语笑话
- Linux脚本攻略学习笔记13
- 我的农村调查报告
- 环境对人成长的力量
- 不再晚睡晚起--——新学期晨读计划
- 我们之间零距离
- 团结的力量
- 怎样学C语言?——我的困惑
- 我钟爱的教育技术专业
- [自]享受春天 享受青春