sed 是一种流编辑器,它是文本处理中非常重要的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用 sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed 主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
大雪
sed 命令常用参数
常用命令
|--|--|
|函数命令|说明|
|1,n|需要操作的行,第一行至第 N 行|
|s|search 查找替换,这个命令使用最多|
|a|append 添加|
|i|insert 插入|
|c|替换|
|d|删除行|
|p|打印|
还有两个最重要的参数
**-n 使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过 sed 特殊处理的那一行(或者动作)才会被列出来。
-i 直接替换原文件,不加-i 都不会修改原文件,只是输出或者放置内存中。**
sed 常用命令的使用
cat test.txt111222333444555666777打印第三行至第五行sed -n '3,5p' test.txt333444555删除第三至第五行sed '3,5d' test.txt111222666777删除第三至第五行并修改原文件sed -i '3,5d' test.txtcat test.txt111222666777第二行之前添加qqqsed '2i qqq' test.txt111qqq222333444555666777第二行之后添加qqqsed '2a qqq' test.txt111222qqq333444555666777第二行替换为qqqsed '2c qqq' test.txt111qqq333444555666777
复制代码
sed 最重要的 s 命令,查找替换
sed "s/查找/替换/g" g 表示一行全部替换,默认一行只替换第一个
cat test.txt111222111444555sed "s/1/php/" test.txtphp11222php11444555sed "s/1/php/g" test.txtphpphpphp222phpphpphp444555
复制代码
跟正则相似。^表示每一行开始,$表示每一行结束。正则匹配是遵循规范的。
每一行开始加//sed "s/^/\/\//g" test.txt//111//222//111//444//555每一行行尾加;sed "s/$/;/g" test.txt111;222;111;444;555;
复制代码
替换满足条件某一个字符
替换每一行的第二匹配字符1,替换成+sed "s/1/+/2" test.txt1+12221+1444555
复制代码
多个匹配替换用;隔开
把2替换成+,把4替换成-sed "s/2/+/g;s/4/-/g" test.txt111+++111---555
复制代码
圆括号子集,在替换结果里面使用\1 \2 \n
cat test.txt1hello1222111444555sed "s/1\(.*\)1/wo\1/g" test.txtwohello222wo1444555
复制代码
常用的项目文件替换
把当前项目中所有文件中的111替换成helloworldsed -i "s/111/helloworld/g" `grep -rl . *`
复制代码
评论