linux中sed深入,Linux中的sed详解

Sed简介

Sed取各种内容 Stream Editor流式编辑器 又称行编辑器每次只编辑一行。Sed工作是在“模式空间”中进行的并不操作源文件。对源文件无危害。

Sed使用格式

sed [-nefri] ‘command’ 输入文本

sed使用参数

-n 使用安静(silent)模式。在一般sed的用法中所有来自STDIN的数据一般都会被列出到终端上。但如果加上-n参数后则只有经过sed特殊处理的那一行(或者动作)才会被列出来。

-e 直接在命令列模式上进行sed的动作编辑

-f 直接将sed的动作写在一个文件内-f filename则可以运行filename内的sed动作

-r sed的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)

-i 直接修改读取的文件内容而不是输出到终端。

动作说明 [n1[,n2]]function

n1, n2 不见得会存在一般代表『选择进行动作的行数』举例来说如果我的动作是需要在10到20行之间进行的则『10,20[动作行为]』

function

a 新增a的后面可以接字串而这些字串会在新的一行出现(目前的下一行)

c 取代c的后面可以接字串这些字串可以取代n1,n2之间的行

d 删除因为是删除啊所以d后面通常不接任何咚咚

i 插入i的后面可以接字串而这些字串会在新的一行出现(目前的上一行)

p 列印亦即将某个选择的数据印出。通常p会与参数sed -n一起运行

s 取代可以直接进行取代的工作哩通常这个s的动作可以搭配正规表示法例如1,20s/old/new/g

企业面试题

请执行命令取出linux 中eth0的IP地址请用cut有能力者也可分别用awksed命令答。

用grep命令实现

43d47df8826b7c18959f4eb6e795fe1e.png

用cut命令来实现

5e91f948ef45f0b30c1d26facca11ab1.png

用awk来实现

[[email protected] ~]# ifconfig eth0|grep "inet addr"|awk -F ":" ‘{print $2}‘

192.168.1.49  Bcast

[[email protected] ~]# ifconfig eth0|grep "inet addr"|awk -F ":" ‘{print $2}‘|awk ‘{print $1}‘

192.168.1.49

[[email protected] ~]# ifconfig eth0|grep "inet addr"|awk -F "[: ]" ‘{printf $13}‘

192.168.1.49

[[email protected] ~]# ifconfig eth0|grep "inet addr"|awk -F "[: ]+" ‘{printf $4}‘

192.168.1.49

[[email protected] ~]# ifconfig eth0|awk -F "[: ]+" ‘NR==2 {printf $4}‘

192.168.1.49

④sed基础正则替换语法

9096c4d409757a9f550aea8c6d80e6cf.png

处理技巧

处理需要的目标获取的字符串如上文的ip前面的字符串一般用以……开头^.*来匹配开头匹配的结尾写上实际的字符如“^.*addr:”表达式就匹配“inet addr:”

而处理需要的目标后的内容一般在匹配的开头写上实际的字符而结尾是用以……结尾(.*$)来匹配。如Bcast:.*$部分表示匹配“Bcast:192.168.1.255  Mask:255.255.255.0”

取MAC地址

21b49e4a800de251413b5177fea8fdef.png

此题是处理目标前的内容所以用“^.*HWaddr”匹配“eth0   Link encap:Ethernet  HWaddr”。

[[email protected] ~]# ifconfig eth0|sed -n ‘s#^.*addr:\(.*\)  BCAST.*$#\1#gp‘

Sed小括号分组功能

a7f4d7730b485fc402946a0e9c4c9826.png

实例

fcab5c20a3b09e5b7ff20aada63bfb73.png

Sed命令替换功能小结

336b76b1cbee76593d058e4928c39c17.png

替换一行中的某部分

格式sed‘s/要替换的字符串/新的字符串/g‘   要替换的字符串可以用正则表达式# sed -n ‘/ruby/p‘ ab | sed ‘s/ruby/bird/g‘#替换ruby为bird# sed -n ‘/ruby/p‘ ab | sed ‘s/ruby//g‘#删除ruby

插入# sed -i ‘$a bye‘ ab#在文件ab中最后一行直接输入"bye"Hello!ruby is me,welcome to my blog.endbye

删除匹配行

sed -i ‘/匹配字符串/d‘  filename注若匹配字符串是变量则需要“”而不是‘’。记得好像是

替换匹配行中的某个字符串

sed -i ‘/匹配字符串/s/替换源字符串/替换目标字符串/g‘ filename

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sed(stream editor)是一个流式文本编辑器,用于在输入流按照指定规则进行文本的替换、删除、插入等操作。它通常与管道结合使用,对文本进行实时处理。 sed命令的基本语法是: ``` sed [选项] 'script' [输入文件] ``` 其,选项用于指定sed的行为,script是一个由sed命令组成的脚本,用于指定要执行的操作,输入文件是待处理的文本文件。 sed命令常用的选项包括: - `-i`:直接修改输入文件,而不是输出到终端。 - `-e`:指定多个sed命令。 - `-n`:关闭默认输出,只输出经过处理的行。 - `-r`:使用扩展正则表达式。 - `-f`:从文件读取sed脚本。 sed脚本由一系列的sed命令组成,每个命令可以是以下形式之一: - `address command`:指定对满足address条件的行执行command命令。 - `address1, address2 command`:指定对满足address1和address2之间的行执行command命令。 - `command`:对所有行执行command命令。 常用的sed命令包括: - `s/old/new/`:替换每一行第一个匹配到的old字符串为new字符串。 - `s/old/new/g`:替换每一行所有匹配到的old字符串为new字符串。 - `/pattern/d`:删除匹配到pattern的行。 - `p`:打印匹配到的行。 - `i\`:在指定行之前插入文本。 - `a\`:在指定行之后追加文本。 除了上述常用命令外,sed还提供了其他的命令和功能,如正则表达式的支持、分组引用、标签、循环等。 这只是sed命令的简要介绍,实际使用可以根据具体需求选择合适的命令和选项。更详细的内容可以参考官方文档或者其他教程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值