文本流编辑器 (sed、awk)

本文详细介绍了Linux系统中的文本流编辑器sed和文本处理工具awk的使用,包括正则表达式、行处理操作、编辑命令、条件判断等,通过实例展示了如何筛选、替换、追加文本,以及awk的格式化输出和条件操作等功能,适用于Linux运维和文本处理场景。
摘要由CSDN通过智能技术生成

扩展正则表达式

扩展正则表达式是基础正则表达式的扩充深化

+ 匹配前面子表达式1次及以上

? 匹配前面子表达式0次或者1次

() 将括号中的字符串作为一个整体

| 以或的方式匹配字条串

练习示例:

过滤出字母g与d之间至少有1个字母o的行:

[root@localhost ~]# egrep go+d test.txt

god

good

goood

gooood

root@olocalhost ~# awk /go+d/{print} test.txt

god

good

goood

gooood

过滤出字母g与d之间没有字母o或只有1个o的行: 

[root@localhost ~]# egrep go?d test.txt

[root@localhost ~]# awk '/go?d/{print}' test.txt

gd

godk

过滤出字母g与d之间两个字母o一起出现至少1次的行:

[root@localhost ~]# egrep g(oo)+d" test.txt

[root@localhost ~1# awk '/g(oo)+d/{print}' test.txt

good<

gooood<

过滤出字母g与d之间是la或者是aa的行:

[root@localhost ~]# egrep " g(la|aa)d" test.txt

[root@localhost ~]# awk '/g(la laa)d/{print}' test.txt K

glad

gaad

过滤ifconfig中的IP:

[root@CentOS6-node1 ~]# ifconfig eth0 | awk /inet addr/{print $2}' | awk -F: '{print$2}

192.168.200.101

[root@CentOS6-node1 ~]# ifconfig eth0 | awk -F'[ :]+' /inet addr/{print$4}'

192.168.200.101

文本流编辑器 sed

sed是一个非交互式的流文本编辑器(streameditor),常用于读取文本内容或根据指定的条件进行处理,可实现增删改查的功能。被广泛应用于shell 脚本,以完成自动化处理任务。sed 依赖于正则表达式。

sed在使用时通常会指定行号或正则表达式,否则处理的是全文。

工作原理:

sed每次只从文件或标准输入中读取一行数据,将之拷贝到一个编辑缓冲区,然后对该行数据按指定命令进行处理,并将结果输出到屏幕(标准输出),接着读入下一行。整个文件处理过程像流水线一样逐行处理。

Sed默认并不直接修改文件,他只是操作编辑缓冲区中的信息,编辑完的信息默认在屏幕上显示,如果有需要可将采用重定向的方式导出到指定的文件中(或者结合“-”选项直接在文件中修改)。

 

1. 格式:

sed  [选项]  地址 编辑命令’  输入文件 (常用)

shelf 命令|  sed  [选项]  ‘编辑命令’

sed  [选项]  -f  sed 脚本文件 输入文件

2. 常用选项:

-e 指定要执行的命令,只有一个编辑命令时可省略

-n只输出处理后的行,读入时不显示,不对原文件进行修改

-i 直接编辑原文件,不输出结果

-f 从脚本文件中读取编辑命令并执行

3. 编辑命令格式:

 地址 编辑命令


地址: 可为行数、正则表达式、$, 没有地址代表全文

操作:

p打印(输出)

d 删除(整行)

s 替换(字符串)

c 替换(整行)

r 读取指定文件(到行后)

= 显示文件行号

a  append,追加指定内容到行后

i  insert追加指定内容到行前

w另存为

n 表示读入下一行内容

H复制到剪贴板

g 将剪贴板中的内容覆盖到指定行

例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值