概述: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打开再次编辑会浪费掉很多内存,这就是它的方便之处!

好好学习,天天向上!!!


Leave Your Comment

电子邮件地址不会被公开。 必填项已用*标注