文章目录
前言
在有一定的正则基础应用后,我们可以来玩玩sed的使用。sed本身是一个管线命令,可以分析standard input的,而且sed也是可以将数据进行取代,删除,新增,截取功能,我们先了解一个,然后在聊他的用法
1. sed用法
参数
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正则表达式!
例如 1,20s/old/new/g 就是啦!
- 将etc/passwd的内容列出来并且打印行号。同时删除2~5行
nl /etc/passwd | sed ‘2,5d’; - 将/etc/passwd/ 删除第2行
nl /etc/passwd | sed ‘2d’; - 删除/etc/passwd 从第3行到最后一行
nl /etc/passwd | sed ‘3,$d’; - 在/etc/passwd的第二行后加上“我是咔咔”字样
nl /etc/passwd | sed ‘2a 我是咔咔’;
参数a是指目前行的下一行,也就2的下一行3,所以会出现在第三行 - 在第二行后加上“我是咔咔”与“我是咔咔2”字样,分为俩行显示
nl 1 | sed ‘2a 我是咔咔\nihao’; - 查看一个文件的5到7行
nl 1 | sed -n ‘2,5p’; - 修改文件的内容(不是真的修改)
- 直接修改文件内容(危险操作)
加入的你的文件特别的大,使用vim打开的话那是很伤的,那么我们就可以使用sed来操作 - 在2行后边新增
- 把3到6行的数据直接取代了
sed -i ‘3,6c 这是把3到6行的数据给取代的’ 1; - 把文章的456换成789然后进行修改
2. 注意点
上边的所有的操作,只要在sed 后边跟哥 -i 那么所有的操作都会是真实的写入,而非直观的查看而已。所以-i这个参数在不了解的时候请慎用