概述:Linux sed
命令是利用script
来处理文本文件,sed可依照script的指令,来处理、编辑文本文件Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
下面来看一下sed命令最常用的写法:
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数说明:
- -e script或–expression=script 以选项中指定的script来处理输入的文本文件
-
-f<script文件>或–file=<script文件> 以选项中指定的script文件来处理输入的文本文件
-
-h或–help 显示帮助
-
-n或–quiet或–silent 仅显示script处理后的结果
-
-V或–version 显示版本信息
最常用的即为-e
参数
动作说明:
- a:新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
-
c:取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
-
d:删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
-
i:插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
-
p:打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
-
s:取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
举例说明:
首先查看文件 test 内容
nl test
1 hello world
2 php is good language
3 java also very good
在 文件 test的第二行后插入 python,并查看
sed -e 2a\python test|nl #(2 为在文件第二行后,a 为新增字符串)
1 hello world
2 php is good language
3 python
4 java also very good
以行为单位的新增/删除
sed '2a gogogo' test|nl #(在第二行后新增gogogo)
1 hello world
2 php is good language
3 gogogo
4 java also very good
sed '2,3 d' test|nl #(删除2 到 3行内容 并显示)
sed '2,$d' test|nl #(删除2到末尾,$代表末尾行)
以行为单位的替换与显示:
将第2-5行的内容取代成为『No 2-5 number』呢?
nl test|sed '2,3c no strings' (2-5行 的内容被 no strings 替代)
使用 -n 参数 :
nl test |sed -n '1p' (使用 p 只输出 第一行,通常与 -n一块使用)
数据的搜寻并显示:
搜索含有hello 的行
nl test|sed -n '/hello/p' ()
输出包含从 hello 到 world 字符之间所有行:
cat test|sed -n '/hello/,/world/p'
多点编辑,多个-e参数
#删除 第三行到末尾行,并将bash替换为blueshell
nl /etc/passwd |sed -e '3,$d' -e 's/bash/blueshell/'
直接修改文件内容(危险动作):
(在文件 最后一行 添加一行 ‘good good study ,day day up’)
sed -i '$a good good study ,day day up' test
(文件 hello 被替换为 你好)
sed -i 's/hello/你好/g' test
通过sed 命令修改大文件是非常有效的,如果用vim打开再次编辑会浪费掉很多内存,这就是它的方便之处!
好好学习,天天向上!!!