概述
sed 是处理文本时经常用到的工具,可实现对文本的输出,删除,替换,复制,剪切,导入,导出等各种操作。
本文依据作者的自身经验,记录sed的常用的使用方法。本文虽然不能涵盖sed的所有功能,但本文记录的sed用法能够解决了作者日常工作中 90%以上的问题。希望通过本文的分享,能让读者从sed的字数繁多的说明文档中解救出来,减小学习sed的成本。
sed 常用用法
sed -i 's/regular_expression/replacement/g' file.txt
这个命令格式是最常用的用法,在工作中使用sed场景中出现的频率最高。
对参数和各部分说明:
-i 表示修改文件,如果不带此参数,则将匹配的结果打印到屏幕。
s 表示替换字符串
regular_expression 正则表达式
replacement 对正则表达式匹配的目标,进行替换。如果replacement为空
g 对文件全局做替换
举例:
[www@it.zuocheng.net]$ sed -i 's/[a-z]*/+++/g' file.txt
sed 注意事项
在sed的正则表达式中, 有一些需要转移的特殊字符,比如:
+、(、),这些字符如果是正则表达式的语法中使用的字符,则需要进行转移;如果是文本中需要匹配的字符,则不需要转义。
高级用法
& 变量的使用
& 变量用在replacement部分,表示regular_expression匹配到的文本。
[www@it.zuocheng.net]$ echo "hello world"| sed 's/[a-z]*/(&)/g'
(hello) (world)
正则匹配 \1 – \9 变量
使用sed提取正则匹配的各个部分。
正则匹配的变量,主要用在replacement部分。表示regular_expression的子变量。
可用于截取字符串
[www@it.zuocheng.net]$ echo "hello123 world456"| sed 's/\([a-z]\+\)[0-9]\+/\1/g'
hello world