sed命令

目录

一、sed

1.sed命令选项

2.语法选项

3.sed脚本格式

4.搜索替代

5.分组后向引用

1.提取版本号:

2.提取IP地址

3.提取数字权限

6.变量

二、免交互

1.多行重定向

2.免交互脚本

总结:本章主要介绍了seq和免交互的用法及相关知识


一、sed

sed是行编辑器

sed [选项] '语法1' [input file]

1.sed命令选项

-n 不输出模式空间内容到屏幕(关闭自动打印)

-e 多点编辑

-f 从指定文件中读取编辑脚本

-r,-E 使用扩展正则表达式

-i.bak 备份文件并原处编辑(修改前会先备份文件)

-ir 不支持

-i -r 支持

-ri 支持

-ni 会清空未匹配的行

2.语法选项

p 打印

q 退出

d 删除

a 追加

c 替换

i 添加

w 第二行写入文件

= 显示行号

r 读取指定文件的文本至文件的行前

sed 会自动打印:

[root@localhost sy]# sed '' /etc/fstab

#
# /etc/fstab
# Created by anaconda on Mon Oct  9 18:28:14 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=c691f6ac-d1a0-46ad-b02b-7c6256963e6b /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
[root@localhost sy]# 

sed支持重定向输入:

[root@localhost sy]# sed '' </etc/fstab

#
# /etc/fstab
# Created by anaconda on Mon Oct  9 18:28:14 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=c691f6ac-d1a0-46ad-b02b-7c6256963e6b /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
[root@localhost sy]# 
3.sed脚本格式

#:指定的行,$:最后一行

#,# 从#行到#行

#,+# 从#行到+#行 如3,+4表示3,7行

/pat1/ ,/pat2/ 第一个正则表达式和第二个正则表达式之间的行

#,/pat/ 从#号行为开始找到pat为止

/pat/,# 找到#号个pat为止

步进~

1~2 奇数行

2~2 偶数行

sed -n 'n;p' 打印偶数行

sed -n 'p;n' 打印奇数行

sed不加-n会再打印一遍:

[root@localhost sy]# seq 10|sed 'p'
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10
[root@localhost sy]# seq 10|sed -n 'p'
1
2
3
4
5
6
7
8
9
10
[root@localhost sy]# 

4.搜索替代

s/旧字符/新字符/修饰符 查找替换,支持使用其它分隔符,可以是其它形式如

s@@@或者s###

替换修饰符:

g 行内全局替换

p 显示替换成功的行

w /PATH/FILE 将替换成功的行保存至文件中

I,i 忽略大小写

5.分组后向引用

第一个(123)对应\1

第二个(abc)对应\2

第三个(xyz)对应\3

1.提取版本号:
[root@localhost ~]# cat nm|sed -nr 's/.*-(.*).jar/\1/p'
1.9.7
1.9.7
2.7.7
3.4
1.0
0.7.6
5.0.4
1.9.5
1.64
1.46
1.64
2.5.5
[root@localhost ~]# cat nm
ant-1.9.7.jar
ant-launcher-1.9.7.jar
antlr-2.7.7.jar
antlr-runtime-3.4.jar
aopalliance-1.0.jar
archaius-core-0.7.6.jar
asm-5.0.4.jar
aspectjweaver-1.9.5.jar
bcpkix-jdk15on-1.64.jar
bcprov-jdk15-1.46.jar
bcprov-jdk15on-1.64.jar
checker-compat-qual-2.5.5.jar

2.提取IP地址
[root@localhost ~]# ifconfig ens33|sed -nr 's/.*inet (.*)  netmask.*/\1/p'
172.16.114.10
[root@localhost ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.114.10  netmask 255.255.255.0  broadcast 172.16.114.255
        inet6 fe80::20c:29ff:fe5b:b87a  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:5b:b8:7a  txqueuelen 1000  (Ethernet)
        RX packets 69808  bytes 47124205 (44.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 59903  bytes 45306327 (43.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@localhost ~]# 

3.提取数字权限
[root@localhost ~]# stat nm|sed -nr '4s/.*([0-7]{4}).*/\1/p'
0644
[root@localhost ~]# stat nm
  文件:"nm"
  大小:257       	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:100793031   硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2023-11-28 18:39:47.041303261 +0800
最近更改:2023-11-28 18:38:29.647928413 +0800
最近改动:2023-11-28 18:38:29.647928413 +0800
创建时间:-
[root@localhost ~]# 

6.变量
[root@localhost ~]# name=root
[root@localhost ~]# sed -nr '/$name/p' /etc/passwd
[root@localhost ~]# head -n2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@localhost ~]# sed -nr "/$name/p" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# sed -nr '/'$name'/p' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

二、免交互

1.多行重定向

eof开始(小写大写都可以)

eof结束(小写大写都可以)

[root@localhost ~]# cat <<eof
> sdk
> sdmpsvo
> sdvlm
> eof
sdk
sdmpsvo
sdvlm
[root@localhost ~]#

[root@localhost ~]# cat >123 <<EOF
> kdsvn
> fdlm
> fmdk
> ddmfkv
> EOF
[root@localhost ~]# cat 123
kdsvn
fdlm
fmdk
ddmfkv
[root@localhost ~]# 

[root@localhost ~]# tee /opt/mysql.repo <<eof
> [al]
> name=al
> baseurl=file:///mnt
> gpgcheck 0
> eof
[al]
name=al
baseurl=file:///mnt
gpgcheck 0
[root@localhost ~]# cat /opt/mysql.repo
[al]
name=al
baseurl=file:///mnt
gpgcheck 0
[root@localhost ~]# 

2.免交互脚本

1.expect 在/usr/bin/expect

#!/usr/bin/expect

2.spawn (开启免交互)[命令]

expect 捕捉屏幕上的关键字

exp_continue 继续捕捉屏幕上的字

send 发送指令

interact 代表退出expect 会留在新的终端

expect eof 代表结束

[root@localhost ~]# vim jc
[root@localhost ~]# chmod +x jc
[root@localhost ~]# ./jc
spawn ssh 172.16.114.20
root@172.16.114.20's password: 
Last login: Tue Nov 28 19:39:01 2023 from 172.16.114.10
[root@localhost ~]# exit
登出
Connection to 172.16.114.20 closed.

#!/usr/bin/expect
spawn ssh 172.16.114.20
expect {
  "yes/no" { send "yes\n";exp_continue }
  "password" { send "123\n" }
}
interact

总结:本章主要介绍了seq和免交互的用法及相关知识

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/197888.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

p9 第55题 两个有序单链表L1,L2求交的操作,得到新的链表L3,L3任然保持有序的状态 中国计量大学2016年数据结构题(c语言代码实现)

本题代码如下 linklist merge(linklist* L1, linklist* L2)//将两个链表的公共元素合并产生新链表 {lnode* ra (*L1)->next, * rb (*L2)->next;lnode* r;lnode* s;lnode* C (lnode*)malloc(sizeof(lnode));C->next NULL;r C;while (ra && rb)//循环跳出…

泛微 E-Office sample权限绕过+文件上传组合漏洞Getshell

0x01 产品简介 泛微E-Office是一款标准化的协同 OA 办公软件&#xff0c;泛微协同办公产品系列成员之一,实行通用化产品设计&#xff0c;充分贴合企业管理需求&#xff0c;本着简洁易用、高效智能的原则&#xff0c;为企业快速打造移动化、无纸化、数字化的办公平台。 0x02 漏…

lv11 嵌入式开发 WDT实验 12

目录 1 WDT简介 2 Exynos4412下的WDT控制器 2.1 概述 2.2 WDT的特性 2.3 工作原理 2.4 其他细节 3 WDT寄存器详解 3.1 WTCON控制寄存器 3.2 WTDAT 实时中断寄存器 3.3 WTCNT 递减计数器 3.4 WTCLRINT清除中断寄存器 4 WDT编程 1 WDT简介 Watch Dog Timer即看门狗定…

探索三种生成模型:基于DDPMs、NCSNs和SDEs方法的Diffusion

探索三种生成模型&#xff1a;基于DDPMs、NCSNs和SDEs方法的Diffusion 去噪扩散概率模型&#xff08;DDPMs&#xff09;正向过程反向过程 噪声条件得分网络&#xff08;NCSNs&#xff09;正向过程初始化训练 NCSNs生成样本 反向过程 随机微分方程&#xff08;SDEs&#xff09;原…

自然资源科普交互大屏助力自然资源的保护

在当代社会&#xff0c;自然资源的科学管理和可持续利用变得愈发重要。为了提高公众对于自然资源的认知和理解&#xff0c;科普交互大屏成为一个新兴的工具。它通过生动的图像和实时数据展示&#xff0c;以及与观众的互动方式&#xff0c;让人们更深入地了解自然资源和环境保护…

eNSP防火墙USG6000V使用Web界面登入教程

文章目录 登入流程1、下载USG6000V的镜像包2、导入USG6000V的镜像包3、配置防火墙web页面4、修改本机vmnet1网卡的ipv4地址5、在eNSP上添加云6、配置防火墙管理地址&#xff0c;开启http服务7、关闭电脑防火墙8、访问web页面 登入流程 1、下载USG6000V的镜像包 链接&#xff…

数据库应用:MongoDB 库与集合管理

目录 一、理论 1.MongoDB用户管理 2.MogoDB库管理 3.MogoDB集合管理 二、实验 1.MongoDB用户管理 2.MogoDB库管理 3.MogoDB集合管理 三、问题 1.不显示新创建的数据库 2.插入数据报错 3.删除指定数据库报错 一、理论 1.MongoDB用户管理 (1) 内置角色 数据库用户…

Postman进阶功能实战演练

Postman除了前面介绍的一些功能&#xff0c;还有其他一些小功能在日常接口测试或许用得上。今天&#xff0c;我们就来盘点一下&#xff0c;如下所示&#xff1a; 1.数据驱动 想要批量执行接口用例&#xff0c;我们一般会将对应的接口用例放在同一个Collection中&#xff0c;然…

ZYNQ_project:IIC_EEPROM

EEPROM简介&#xff1a; EEPROM(Electrically Erasable Progammable Read Only Memory&#xff0c; E2PROM)是指带电可擦可编程只读存 储器&#xff0c;是一种常用的非易失性存储器&#xff08;掉电数据不丢失&#xff09;&#xff0c; E2PROM 有多种类型的产品&#xff0c;我…

【计算机网络学习之路】序列化,反序列化和初识协议

文章目录 前言一. 序列化和反序列化1.自己实现2. JSON 二. 初识协议结束语 前言 本系列文章是计算机网络学习的笔记&#xff0c;欢迎大佬们阅读&#xff0c;纠错&#xff0c;分享相关知识。希望可以与你共同进步。 本篇博文讲解应用层的序列化和反序列化&#xff0c;还有见一…

Linux基础项目开发1:量产工具——显示系统(二)

前言&#xff1a; 前面我们已经对这个项目的基本框架有了一个初步的了解与认识&#xff0c;要实现显示管理器与输入管理器&#xff0c;有输入有输出基本就实现这个项目的大部分功能了&#xff0c;首先我们先来做显示系统&#xff0c;对于上层系统为了让程序更好扩展&#xff0c…

Python分享之字符串格式化 (%操作符)

在许多编程语言中都包含有格式化字符串的功能&#xff0c;比如C和Fortran语言中的格式化输入输出。Python中内置有对字符串进行格式化的操作%。 模板 格式化字符串时&#xff0c;Python使用一个字符串作为模板。模板中有格式符&#xff0c;这些格式符为真实值预留位置&#xff…

【Android Jetpack】Hilt 依赖注入框架

文章目录 依赖注入DaggerHiltKoin添加依赖项Hilt常用注解的含义HiltAndroidAppAndroidEntryPointInjectModuleInstallInProvidesEntryPoint Hilt组件生命周期和作用域如何使用 Hilt 进行依赖注入 依赖注入 依赖注入是一种软件设计模式&#xff0c;它允许客户端从外部源获取其依…

计算机丢失vcomp140.dll是什么意思,如何解决与修复(附教程)

vcomp140.dll缺失的5种解决方法以及vcomp140.dll缺失原因 引言&#xff1a; 在日常使用电脑的过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中之一就是“vcomp140.dll缺失”。这个错误提示通常出现在运行某些程序或游戏时&#xff0c;给使用者带来了困扰。本文…

【蓝桥杯 LCA 差分】 砍树

题目分析&#xff1a; 这道题还是比较裸的一道书上差分的题目了 对于每一对标记点(x,y) 他们之间的路径就是 x − > L C A ( x , y ) − > y x->LCA(x,y)->y x−>LCA(x,y)−>y 这条路径上的每一条边都要经过。 那么对于一条边&#xff0c;什么时候砍掉这条…

【推荐系统】MMOE笔记 20231126

paper阅读 任务差异带来的固有冲突实际上会损害至少某些任务的预测&#xff0c;特别是当模型参数在所有任务之间广泛共享时。&#xff08;在说ESMM&#xff09; 共享底层参数可以减少过拟合风险&#xff0c;但是会遇到任务差异引起的优化冲突&#xff0c;因为所有任务都需要在…

Django二转Day02

http #1 http 是什么#2 http特点#3 请求协议详情 -请求首行---》请求方式&#xff0c;请求地址&#xff0c;请求协议版本 -请求头---》key:value形式 -referer&#xff1a;上一次访问的地址 -user-agenet&#xff1a;客户端类型 -name&#x…

JSP迭代标签之 forEach循环标签 基本使用讲解

好 之前我们讲完了 我们的条件动作标签 那么 我们来继续说 迭代标签 所谓迭代就是 将某个主体循环多次 也可以循环 集合 对象 map 这个标签叫 forEach items 就是 我们要循环的数据 注意 这里 操作的也是域对象中的值 begin 开始说 例如 i 0;i<x;i begin 就是开始数 当前…

1.Spring源码解析-ClassPathXmlApplicationContext

此类是读取spring的xml配置文件并解析。也是源码入口之一。 我们调试即将开始。 传递给父类设置值 经调试我们得到是给AbstractApplicationContext设置默认的应用上下文父级的值&#xff0c;很明显是空 给父类AbstractRefreshableConfigApplicationContext设置属性 刷新容器…

AMESim|学习记录

此文记录AMESim学习过程中的各种情况。 目录 01 王佳. AUV 浮力调节系统设计及控制策略研究[D]. 天津大学, 2017.01 王佳. AUV 浮力调节系统设计及控制策略研究[D]. 天津大学, 2017. 01 王佳. AUV 浮力调节系统设计及控制策略研究[D]. 天津大学, 2017. 开始步入正文 01 王佳.…