写点什么

sed 命令基础

用户头像
飞翔
关注
发布于: 2020 年 06 月 10 日

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 . *`
复制代码


用户头像

飞翔

关注

什么玩意好的 2017.08.31 加入

码农

评论

发布
暂无评论
sed命令基础