sed笔记

以下是要介绍的全部基础命令:

名称命令语法说明
替换 s [address]s/pattern/replacement/flags 替换匹配的内容
删除 d [address]d 删除匹配的行
插入 i [line-address]i ext 在匹配行的前方插入文本
追加 a [line-address]a ext 在匹配行的后方插入文本
行替换 c [address]c ext 将匹配的行替换成文本text
打印行 p [address]p 打印在模式空间中的行
打印行号 = [address]= 打印当前行行号
打印行 l [address]l 打印在模式空间中的行,同时显示控制字符
转换字符 y [address]y/SET1/SET2/ 将SET1中出现的字符替换成SET2中对应位置的字符
读取下一行 n [address]n 将下一行的内容读取到模式空间
读文件 r [line-address]r file 将指定的文件读取到匹配行之后
写文件 w [address]w file 将匹配地址的所有行输出到指定的文件中
退出 q [line-address]q

读取到匹配的行之后即退出  

替换命令:

[address]s/pattern/replacement/flags
  flags为:

● n: 一个数字(取值范围1-512),表明仅替换前n个被pattern匹配的内容;

● g: 表示全局替换,替换所有被pattern匹配的内容;

● p: 仅当行被pattern匹配时,打印模式空间的内容;

● w file:仅当行被pattern匹配时,将模式空间的内容输出到文件file中;

删除命令:  

[address]d

      

插入行/追加行/替换行命令: i/a/c

# Append 追加
[line-address]a
text
# Insert 插入
line-address]i
text
# Change 行替换
[address]c
text
 
打印命令: p/l/=
sed -n '2p' 444.out
#单独输出第二行
sed -n '4l' 444.out
#输出第四行显示控制字符
sed  '=' 444.out
#输出时附带行号
 
 

转换命令: y

转换命令的语法是:

[address]y/SET1/SET2/
用SET2来替换SET1
在匹配的行上,将SET1中出现的字符替换成SET2中对应位置的字符,与tr类似
$ echo "hello, world" | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'
HELLO, WORLD
  
$ echo "hello, world" | tr a-z A-Z                                                    
HELLO, WORLD
 
读写文件命令
[line-address]r file
[address]w file
  
  

    

原文地址:https://www.cnblogs.com/flyr/p/5485491.html