sed 命令使用(2)

1、sed 命令的后项要引用取IP

[root@localhost scripts]# ifconfig enp0s3|grep 'inet '|sed -r 's#.*inet (.*) netmask.*$#\1#g'
192.168.0.3
[root@localhost scripts]#

[root@localhost scripts]# ifconfig enp0s3
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.3  netmask 255.255.255.0  broadcast 192.168.0.255

  .*inet                (.*)    \1                netmask.*$

    sed -r 's#.*inet (.*) netmask.*$#\1#g;上述颜色相同的代表内容统一;(.*)括号的内容就是选定的内容用 \1表示;若有两个从左向右的方向排序\1 \2……

-r 支持正则表达式

2、sed 查找内容并执行命令

查找/etc/passwd,找到root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把bash替换为blueshell,再输出这行:

[root@localhost scripts]# sed -n '/root/{s/bash/blueshell/;p}' /etc/passwd
root:x:0:0:root:/root:/bin/blueshell
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost scripts]#

3、sed 命令打印行

[root@localhost scripts]# sed   "=" color.sh
1
#!/bin/sh
2
RED_COLOR='\E[1;31m'
3
GREEN_COLOR='\E[1;32m'
4
YELLOW_COLOR='\E[1;33m'
5

4、sed 修改文件加备份加

-i:后跟备份成的文件名;注意:如果sed 跟多个参数进行文件备份 -i必须放到参数位的最后如果放到前面文件会备份成这样:

[root@localhost scripts]# sed -ir.2016.bak 's#^sed#s1#g' b.log #失败的案例 
[root@localhost scripts]# ls
b.log       b.logr.2016.bak

[root@localhost scripts]# cat b.log.2018.bak
11

root@localhost scripts]# sed -i.2018.bak 's#11#sedcmd#g' b.log

[root@localhost scripts]# ls b.*
b.log  b.log.2018.bak

[root@localhost scripts]# cat b.log.2018.bak
11
[root@localhost scripts]# cat b.log
sedcmd

 

 

在 Linux 系统中,`sed`(stream editor)是一个非常强大的文本处理工具,它允许用户通过脚本或命令行指令对文本进行流式处理,包括查找、替换、删除、插入等操作。以下将详细介绍如何使用 `sed` 命令进行文本替换和处理。 ### 基本语法 `sed` 的基本命令格式如下: ```bash sed [选项] '编辑命令' [输入文件] ``` 常见的选项包括: - `-n`:禁止自动输出,通常用于仅输出匹配的行。 - `-e`:允许多条编辑命令串联使用- `-i`:直接修改源文件(慎用)。 - `-f`:从脚本文件中读取编辑命令。 ### 文本替换 `sed` 最常用的功能之一是文本替换,其基本格式为: ```bash s/原字符串/替换字符串/标志 ``` 其中,`s` 表示替换操作,`/` 是分隔符,也可以使用其他字符(如 `#` 或 `:`)代替。 #### 示例 1:简单替换 将文本中的 `hello` 替换为 `hi`: ```bash sed 's/hello/hi/' filename.txt ``` #### 示例 2:全局替换 默认情况下,`sed` 只会替换每行中第一个匹配的内容。要替换所有匹配项,需添加 `g` 标志: ```bash sed 's/hello/hi/g' filename.txt ``` #### 示例 3:替换特定行 替换第 3 行中的内容: ```bash sed '3s/hello/hi/' filename.txt ``` 替换从第 5 行到第 10 行的内容: ```bash sed '5,10s/hello/hi/' filename.txt ``` ### 文本删除 删除匹配某模式的行: ```bash sed '/pattern/d' filename.txt ``` 删除第 2 到第 5 行: ```bash sed '2,5d' filename.txt ``` ### 插入与追加 在某行前插入内容(`i`)或在某行后追加内容(`a`): ```bash # 在匹配 "pattern" 的行前插入一行 sed '/pattern/i This is a new line' filename.txt # 在匹配 "pattern" 的行后追加一行 sed '/pattern/a This is a new line' filename.txt ``` ### 替换文件内容保存 如果希望直接修改原文件,可以使用 `-i` 选项: ```bash sed -i 's/hello/hi/g' filename.txt ``` 此操作会直接修改 `filename.txt` 的内容,建议在使用备份原文件。 ### 多条命令组合 可以使用 `-e` 选项执行多条命令: ```bash sed -e 's/hello/hi/' -e 's/world/universe/' filename.txt ``` 也可以将多条命令写入脚本文件,再通过 `-f` 选项调用: ```bash # script.sed s/hello/hi/ s/world/universe/ # 执行脚本 sed -f script.sed filename.txt ``` ### 总结 `sed` 是一个非常灵活且高效的文本处理工具,适用于自动化脚本中对文本的快速处理。通过掌握基本的替换、删除、插入等命令,可以显著提升 Linux 系统下的文本处理效率。在实际使用中,建议结合正则表达式以实现更复杂的文本匹配与替换操作[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值