Linux - sed命令详解

目录

sed命令

01.sed是什么?

02.sed的模式空间和保留空间

03.sed语法格式

04.sed常用选项

-n选项

-i选项

05.sed常用编辑命令

p命令:

 c命令

s命令


sed命令

01.sed是什么?

sed全称是:Stream EDitor(流编辑器),是对文本字符串流进行过滤和转换(替换和删除)的编辑器。

02.sed的模式空间和保留空间

03.sed语法格式

1、sed [选项] sed编辑命令 输入文件
2、shell 命令 | sed [选项] sed编辑命令
3、sed [选项] -f sed脚本文件 输入文件

04.sed常用选项

-n:只显示匹配处理的行(否则会输出所有的行)

-e:执行多个编辑命令时(一般用;代替)

-r:直接在文件进行修改,而不是输出到屏幕

-i:支持扩展正则

-n选项

# 输出第一行
[root@localhost 7.6]# sed -n '1p' passwd 
root:x:0:0:root:/root:/bin/bash
# 输出最后一行
[root@localhost 7.6]# sed -n '$p' passwd 
mengmeng3:x:9943:9944::/home/mengmeng3:/bin/bash
# 输出第一行和第五行
[root@localhost 7.6]# sed -n '1p;5p' passwd 
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

示例:查看以liu开头的行

[root@localhost 7.6]# sed -n '/^liu/p' passwd 
liudehua:x:1022:1022::/home/liudehua:/bin/bash

-i选项

-i选项会直接在原文进行修改,不会输出到屏幕

原文本:

[root@localhost 7.6]# cat fan.txt
wo ai chi fan ming you
fan ming you  fan ming you

将以fan开头的替换为liu

[root@localhost 7.6]# sed -i '/^fan/ s/fan/liu/g' fan.txt 
[root@localhost 7.6]# cat fan.txt 
wo ai chi fan ming you
liu ming you  liu ming you

将ai替换为111

[root@localhost 7.6]# sed -i 's/ai/111/g' fan.txt 
[root@localhost 7.6]# cat fan.txt 
wo 111 chi fan ming you
liu ming you  liu ming you

05.sed常用编辑命令

p:打印匹配行 print

d:删除指定行 delete

a:在匹配行后面追加 append

i:在匹配行前面插入insert

c:整行替换

 r:将文件的内容读入 read

w:将文本写入文件 write

s:字符串替换(匹配正则表达式)substitution

=:输出行号

p命令:

不连续的输出多行, ;是命令连接符

[root@localhost 7.6]# sed -n '1p;3p;5p' passwd 
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

 连续输出多行

[root@localhost 7.6]# sed -n '1,5p' passwd 
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

 1~2p,从第一行开始,步长为2,每次间隔2行输出

[root@localhost 7.6]# cat -n passwd | sed -n '1~2p' | head -10
     1	root:x:0:0:root:/root:/bin/bash
     3	daemon:x:2:2:daemon:/sbin:/sbin/nologin
     5	lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     7	shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     9	mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    11	games:x:12:100:games:/usr/games:/sbin/nologin
    13	nobody:x:99:99:Nobody:/:/sbin/nologin
    15	dbus:x:81:81:System message bus:/:/sbin/nologin
    17	sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    19	chrony:x:998:996::/var/lib/chrony:/sbin/nologin

 c命令

1.修改主机名/etc/hostname里的内容为你自己的名字

[root@localhost 7.6]# cat /etc/hostname 
lcoalhost.localdomain
[root@localhost 7.6]# sed -i '1c wangsh' /etc/hostname
[root@localhost 7.6]# cat /etc/hostname 
wangsh

s命令

 2.修改selinux策略/etc/selinux/config里的SELINUX=enforcing修改为SELINUX=disabled

[root@localhost 7.6]# sed -i '/^SELINUX=/ s/enforcing/disabled' /etc/selinux/config

   3.禁用网卡 /etc/sysconfig/network-scripts/ifcfg-ens33的ONBOOT="yes"修改为ONBOOT="on"

[root@localhost network-scripts]# sed -i '/^ONBOOT=/s/yes/no/' ifcfg-ens33 
[root@localhost network-scripts]# cat ifcfg-ens33 
BOOTPROTO="none" # 指定获得ip地址的引导协议,dhcp说明是动态获得,none是静态
NAME="ens33" # 网卡名字
UUID="20641fea-634f-424c-b9ea-3e2c6db49ea3" # 设备的唯一标识符
DEVICE="ens33" # 设备的名字
ONBOOT="no" # 系统启动的时候激活网卡,yes标识激活,no禁用
IPADDR=192.168.44.132 # 建议ip地址不能和别人冲突
NETMASK=255.255.255.0  # 指定子网掩码
GATEWAY=192.168.44.2  # 指定网关
DNS1=114.114.114.114 # 首选dns服务器
#DNS1=192.168.44.0 # 备用dns服务器

练习:

练习:
1.sed取出/etc/passwd文件的第一列
2.sed将PATH环境变量中的冒号换成换行  ->可以将PATH变量的内容重定向到一个文件里,例如path.txt
3.sed将PATH环境变量斜杠/换成斜杠\
4.sed修改SELINUX配置文件从开启(enforcing)变成禁用(disabled)
/etc/sysconfig/selinux
5.去掉/etc/passwd文件中第二个字段的x
6.将/etc/sysconfig/network-scripts/ifcfg-ens33里的ONBOOT=no修改为yes或者修改下IPADDR后面的ip地址,具体ip自己定义
7.只显示ip add的ip地址
8.复制/etc/ssh/sshd_config到当前目录下,修改里面的端口号修改为8899
将#Port 22 配置修改为Port 8899 要求去掉前面的#号,将22修改为8899
  9.给下列含有大写字母的行,在大写字母后追加数字2022  --》sed
   abcdSdddde
   islHishbxld
   goBkefji
   daanshXxge
不要直接对上面的源文件进行操作,建议复制到当前文件夹里进行
 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linuxsed命令是一个用于文本处理的强大工具。它可以根据指定的编辑命令对输入文件进行操作,并输出结果。sed命令的基本语法如下: sed [选项] sed编辑命令 输入文件 其中,选项是可选的,用于控制sed命令的行为。sed编辑命令是指对文本进行操作的具体命令,可以是单个命令,也可以是多个命令组合在一起。输入文件是要进行处理的文本文件。 sed命令还支持通过管道将shell命令的输出作为输入进行处理,具体语法如下: shell命令 | sed [选项] sed编辑命令 此外,sed命令还可以通过-f选项指定一个sed脚本文件来进行处理,具体语法如下: sed [选项] -f sed脚本文件 输入文件 在使用sed命令时,还可以通过使用一些小技巧来实现特定的功能。例如,可以使用命令连接符";"来输出多行不连续的内容。例如,以下命令会输出passwd文件中的第1行、第3行和第5行: sed -n '1p;3p;5p' passwd 这样,你就能够根据需要使用sed命令来处理文本文件,并实现各种需要的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【Linux篇】sed命令详解](https://blog.csdn.net/weixin_45842494/article/details/124699219)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Linux - sed命令详解](https://blog.csdn.net/qq_48391148/article/details/125711532)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值