当前位置:   article > 正文

shell系列8-sed_sed -n

sed -n

一. sed概述

sed(stream editor)是流编辑器,可对文本文件和标准输入进行编辑。
sed只是对缓冲区中原始文件的副本进行编辑,并不编辑原始的文件,如果需要保存改动内容,可以选择使用下面两种方法:
重定向
w编辑命令

调用sed有三种方法:

  1. 在Shell命令行输入命令调用sed,格式为:
    sed [选项] ‘sed命令’ 输入文件

  2. 将sed命令插入脚本文件后,然后通过sed命令调用它,格式为:
    sed [选项] -f sed脚本文件 输入文件

  3. 将sed命令插入脚本文件后,最常用的方法是设置该脚本文件为可执行,然后直接执行该脚本文件,格式为:
    ./sed脚本文件 输入文件

第二种方法脚本文件的首行不以#!/bin/sed –f开头;第三种方法脚本文件的首行是#!/bin/sed –f,推荐使用第一种方法和第三种方法

image.png

二. sed实例

sed -n 1p a.txt
打印第一行

sed -n -e ‘/abc/p’ -e ‘/abc/=’ a.txt
‘/abc/p’ 打印含有abc的行
‘/abc/=’ 打印含有abc的行的行号

sed -n ‘2,10!p’ a.txt
打印除了第二行到第十行所有的行

sed -n ‘3,/abc/p’ abc.txt
打印从第三行到匹配abc所在的行

sed ‘1,10d’ abc.txt
删除abc.txt的第一到第十行

sed ‘s/abc/ABC/’ abc.txt
将abc.txt中所有的小写abc都替换成大写的ABC,并打印所有行

sed -n ‘s/abc/ABC/p’ abc.txt
将abc.txt中所有的小写abc都替换成大写的ABC,只打印替换的行

sed -n ‘s/abc/ABC/w newabc.txt’ abc.txt
将abc.txt中所有的小写abc都替换成大写的ABC,并将结果保存到newabc.txt文件中,只将修改的行写入到新文件中

追加文本:匹配行后面插入
插入文本:匹配行前面插入
修改文本:将所匹配的文本行利用新文本替代
删除文本:将指定行或指定行范围进行删除

a.txt文件

abc
def
ddfe
fefefefef  adfefef
fefefefef
  • 1
  • 2
  • 3
  • 4
  • 5

测试记录:

[root@hp8 tmp]# sed -n 1p a.txt
abc
[root@hp8 tmp]# more a.txt
abc
def
ddfe
fefefefef  adfefef
fefefefef
[root@hp8 tmp]# sed -n -e '/abc/p' -e '/abc/=' a.txt
abc
1
[root@hp8 tmp]# more a.txt
abc
def
ddfe
fefefefef  adfefef
fefefefef
[root@hp8 tmp]# 
[root@hp8 tmp]# sed -n '2,10!p' a.txt
abc
[root@hp8 tmp]# more a.txt
abc
def
ddfe
fefefefef  adfefef
fefefefef
[root@hp8 tmp]# sed -n '3,/abc/p' abc.txt
sed:无法读取 abc.txt:没有那个文件或目录
[root@hp8 tmp]# 
[root@hp8 tmp]# 
[root@hp8 tmp]# sed -n '3,/abc/p' a.txt
ddfe
fefefefef  adfefef
fefefefef
[root@hp8 tmp]# more a.txt
abc
def
ddfe
fefefefef  adfefef
fefefefef
[root@hp8 tmp]# 
[root@hp8 tmp]# sed '1,10d' abc.txt
sed:无法读取 abc.txt:没有那个文件或目录
[root@hp8 tmp]# 
[root@hp8 tmp]# sed '1,10d' a.txt
[root@hp8 tmp]# more a.txt
abc
def
ddfe
fefefefef  adfefef
fefefefef
[root@hp8 tmp]# sed 's/abc/ABC/' a.txt  
ABC
def
ddfe
fefefefef  adfefef
fefefefef
[root@hp8 tmp]# more a.txt
abc
def
ddfe
fefefefef  adfefef
fefefefef
[root@hp8 tmp]# 
[root@hp8 tmp]# sed -n 's/abc/ABC/p' a.txt  
ABC
[root@hp8 tmp]# more a.txt
abc
def
ddfe
fefefefef  adfefef
fefefefef
[root@hp8 tmp]# sed -n 's/abc/ABC/w newabc.txt' a.txt  
[root@hp8 tmp]# more a.txt
abc
def
ddfe
fefefefef  adfefef
fefefefef
[root@hp8 tmp]# more newabc.txt
ABC
[root@hp8 tmp]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82

如果要直接修改文本文件内容,需要使用sed -i

[root@hp8 tmp]# sed  -i 's/abc/ABC/g' a.txt 
[root@hp8 tmp]# more a.txt
ABC
def
ddfe
fefefefef  adfefef
fefefefef
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/322935
推荐阅读
相关标签
  

闽ICP备14008679号