文章目录
前言
本文参考自菜鸟教程。
Linux sed 命令是利用脚本来处理文本文件。
sed 可依照脚本的指令来处理、编辑文本文件。
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
语法
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数说明
-e< script>或–expression=< script> 以选项中指定的script来处理输入的文本文件。
-f<script文件>或–file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-h或–help 显示帮助。
-V或–version 显示版本信息。
=:打印匹配行的行号
-n 取消默认的完整输出,只要需要的
-i 修改文件内容
-r 不需要转义
动作说明
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何东西;
i :插入, i的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n
一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
示例
前7条示例都相当于查看,并不会对系统或文件进行任何修改。第八条将会修改实际文件。
下面示例全部操作test.txt文件,初始文件如图:
1、第二行后新增语句:第1句中文
sed -e 2a\第1句中文 test.txt
cat test.txt | sed '2a\第一句中文'
2、删除第3-4行
cat test.txt | sed '3,4d'
sed -e '3,4d' test.txt
3、总结上面的两种实现方式的异同点。
sed -e 2a\第1句中文 test.txt --》 cat test.txt | sed '2a\第一句中文'
cat test.txt | sed '3,4d' --》 sed -e '3,4d' test.txt
如果sed放在后面,可以不加-e,下面示例就只实现其中一种方式了。
4、全局替换
ls | sed 's/root/luo/g'
5、替换第2-4行
cat test.txt | sed '2,4c 我是第二行'
6、打印指定条件的文件名
ls | sed -n '/root/p'
7、删除指定条件的文件名
ls | sed '/root/d'
8、直接操作文件内容
sed -i '4d' test.txt