sed笔记
以下是要介绍的全部基础命令:
名称 | 命令 | 语法 | 说明 |
---|---|---|---|
替换 | s | [address]s/pattern/replacement/flags | 替换匹配的内容 |
删除 | d | [address]d | 删除匹配的行 |
插入 | i | [line-address]i\text | 在匹配行的前方插入文本 |
追加 | a | [line-address]a\text | 在匹配行的后方插入文本 |
行替换 | c | [address]c\text | 将匹配的行替换成文本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