文章目录
- 一、基础
-
- 二、功能
- 2.1、增
- 2.2、删
- 2.3、改
- 2.4、查
- 2.5、通用
- 2.6、高级用法
一、基础
1.1、语法格式
sed [选项] [sed指令] [输入文件]
-e 支持对单个文件实现不同的操作;
sed -e '/^#/d' -e '/^$/d' file
-i 直接修改文件内容{默认不会对文件直接操作};
1.2、工作原理
二、功能
2.1、增
[root@localhost tmp]
hello world
heello linux
how are you
i am fine
sed '/world/s/^/Li /' file
sed '/you/s/$/ Li/' file
或
sed '/you/s/\(.*\)/\1 Li/g ' file
用正则表达式,\(\)表示分组,.*表示任意字符,\1引用第一个分组,因为匹配的是任意字符,所有整行都匹配了,在添加的时候就添加到行尾了。
sed 's/linux/jie &/' file
sed 's/linux/& jie/' file
sed '/are/i nihao' file
或
sed '/are/i\nihao' file
错误示范:
[root@localhost tmp]
hello world
heello linux
/nihao
how are you
i am fine
thanks, andyou
sed '/are/a nihao' file
sed '/are/a\nihao\n wo hen hao' file
sed 's/^/Start /' file
sed 's/$/ End/' file
sed '1,3s/^/# /' file
2.2、删
[root@localhost tmp]
sed command
i am fine End
thanks,and you End
sed command end
sed '/^#/d' file
sed '/^#/!d' file
sed '1d' file
sed '$d' file
sed '2,4d' file
sed '/thanks/d' file
sed '/\<you\>/d' file
2.3、改
[root@localhost tmp]
i am fine End
i am file End
thanks,and you End
sed '/tail/s/tail/end/' file
sed '/tail/s/tail/end/g' file
sed '/tail/s/tail/end/2g' file
[root@jie1 ~]
anonymous_enable=YES
write_enable=YES
local_umask=022
xferlog_enable=YES
connect_from_port_20=YES
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
DEVICE="eth0"
BOOTPROTO="static"
HWADDR="00:0C:29:90:79:78"
ONBOOT="yes"
IPADDR=172.16.22.1
NETMASK=255.255.0.0
sed '/DEVICE/c\Ethernet' file
sed 's/static/dhcp/' file
sed '/IPADDR/s/22\.1/10\.12/' file
sed '/connect/s/YES/NO/' file
sed '/bin/s/bin/tom/2g' file
sed 's/daemon/jerry/2p' file
sed 's/adm/boss/2' file
sed '/root/{s/bash/nologin/;s/0/1/g}' file
sed 's/root/(&)/g' file
sed 's/BOOTPROTO/#BOOTPROTO/' file
或
sed 's/BOOTPROTO/#&/' file
sed '/YES/s/^/#/' file
sed '/ONBOOT/s/#//' file
2.4、查
sed -n '1p' data
p:打印模式空间的内容;
-n:取消sed默认输出;
sed -n 'p' data
sed -n '1,3p' data
sed -n '1,5p;9p' data
逗号,表示接连续的行;
分号,表示接特定的行;
老版本需要 -r 支持扩展正则表达式,centos7 不需要
或
sed -n '/hello\|world/p' data
与
sed -n '/hellp/{/world/p}' data
2.5、通用
代码 | 功能 | 示例 |
---|
x | x为行号 | 打印文本中第二行:sed -n '2p' data sed 默认会打印文件中所有的行,-n 表示只打印匹配的行; |
x,y | 表示行号从x到y | 打印文本中第一行到第三行:sed -n '1,3p' data 在上一显示中,显示行号:sed -n '1,3{=;p}' (当用到sed 不同的编辑命令是,用{},且不同编辑命令之间用分号) |
/pattern/ | 查询包含模式的行 | 打印文本中匹配字符串 ‘second’ 的行:sed -n '/second/p' data |
/pattern/,/pattern/ | 查询包含两个模式或的行 | 打印匹配字符data或last的行:sed -n '/data/,/last/p' data 或sed -n '/data\|last/p' data |
/pattern/{/pattern/p} | 查询包含两个模式与的行 | 打印匹配字符data和last的行:sed -n '/data/{/last/p}' data |
/pattern/,x | 在给定行号上查询包含模式的行 | 打印文本中从匹配 first 的行 到第四行:sed -n '/first/,4p' data |
x,/pattern/ | 通过行号和模式查询匹配的行 | 打印第二行到匹配到第一次出现last的行:sed -n '2,/last/p' data |
x,y! | 查询不包含指定行号x和y的行 | 打印非1到2行:sed -n '1,2!p' data |
代码 | 功能 | 示例 |
---|
p | 打印匹配行,常与-n选项搭配使用 | |
= | 显示行号 | |
a\ | 在定位行号后附加文本信息 | |
i\ | 在定位行号后插入文本信息 | |
d | 删除定位行 | |
c\ | 用新文本替换定位文本 | |
w filename | 写文本到一个文件,类似重定向 > | |
r filename | 从另一个文件中读文本,类似输入重定向 < | |
s | 使用替换模式替换相应模式 | |
q | 第一个模式匹配完成后退出或立即退出 | 打印前5行:sed '5q' file |
l (小写L) | 显示八进制ACSII代码等价的控制符 | |
{} | 多个编辑命令时,用分号隔开 | |
n | 从另一个文件中读文本下一行,并从下一条命令而不是第一条命令开始对其的处理 | |
N | 在数据流中添加下一行以创建用于处理的多行组 | |
g | 将模式2粘贴到/pattern n/ | |
y | 传送字符,替换单个字符 | |
代码 | 功能 | 示例 |
---|
^ | 锚定行首 | 过滤以#开头的行:sed -n '/^#/!p' file |
$ | 锚定行尾 | 过滤以A结尾的行:sed -n '/A$/!p' file |
^$ | 空白行 | 过滤 空白行 :sed -n '/^$/!p' file |
. | 任意单个字符 | |
* | 匹配紧挨在前面的字符任意次(0,1,多次) | 打印匹配r有0个或多个,后接一个t字符的行:```sed -n ‘/r*t/p file’ |
.* | 匹配任意长度的任意字符 | 打印匹配r后接任意字符的行:sed -n '/r.*/p' file |
\? | 匹配紧挨在前面的字符0次或1次 | |
\{m,n\} | 匹配其前面的字符至少m次,至多n次 | 打印 o 字母重复出现1次到3次之间的行:sed -n '/o\{1,3\}/p file' |
\{m,\} | 匹配其前面的字符至少m次 | 打印 o 字母重复一次及以上的行:sed -n '/o\{1,\}/p file' |
\{m\} | 精确匹配前面的字符m次 | 打印 o 字母重复3次的行:sed -n '/o\{3\}/p file' |
\< | 锚定词首,相当于\b | |
\> | 锚定词尾 | |
\<pattern\> | 锚定单独一个单词 | |
| 分组,用法格式:pattern,引用\1,\2 | |
[] | 匹配指定范围内的任意单个字符 | |
[^] | 匹配指定范围外的任意单个字符 | |
[:digit:] | 所有数字,相当于[0-9] | |
[:lower:] | 所有小写字母,相当于[a-z] | |
[:upper:] | 所有大写字母,相当于[A-Z] | |
[:alpha:] | 所有的字母,相当于[a-zA-Z]或[a-Z] | |
[:alnum:] | 所有字母和数字,相当于[0-9a-zA-Z] | |
[:space:] | 空白字符 | |
[:punct:] | 所有标点符号 | |
2.6、高级用法
[root@jie1 ~]
Ethernet
HWADDR="00:0C:29:90:79:78"
ONBOOT="yes"
IPADDR=172.16.10.12
NETMASK=255.255.0.0
[root@jie1 ~]
step1:替换源文件;
step2:将替换的内容,重定向到ip.txt中(覆盖保存);
[root@jie1 ~]
ip=172.16.10.12
[root@jie1 ~]
[root@jie1 ~]
hello world
i am li
how are you
li
[root@jie1 ~]
Ethernet
HWADDR="00:0C:29:90:79:78"
ONBOOT="yes"
IPADDR=172.16.10.12
NETMASK=255.255.0.0
[root@jie1 ~]
[root@jie1 ~]
Ethernet
hello world
i am li
how are you
li
HWADDR="00:0C:29:90:79:78"
ONBOOT="yes"
IPADDR=172.16.10.12
NETMASK=255.255.0.0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)