【Shell 编程三剑客】文本处理器sed 工具

文本处理—sed 一、功能简介 二、语法格式 三、语法说明 1、选项说明 2、动作说明 四、典型示例 基本的处理动作 sed文本块处理 常见处理操作示例 五、综合运用 阅读详情

目录

一、sed工具

1.1、sed 工具

1.1.2、sed是什么

1.1.3、sed的原理

1.1.4、用法示例

1.1.4.1、打印输出 -n

1.1.4.2、扩展正则r

1.1.4.3、增加内容 i

1.1.4.4、删除 d

1.1.4.5、替换c

1.1.4.6、搜索替换 s

1.1.4.7、插入文件 r

1.1.4.8、另存为到文件 w

1.1.4.9、同时编辑 -e

1.1.4.10、分组操作ne {} ()

1.1.4.11、读取完退出


一、sed工具

在Linux/UNIX 系统中包含很多种类的文本处理器或文本编辑器,其中包括我们之前学习过的VIM 编辑器与grep 等。
而 grep,sed,awk 更是Shell 编程中经常用到的文本处理工具, 被称之为Shell 编程三剑客。

1.1、sed 工具

sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。sed也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于Shell脚本中,用以完成各种自动化处理任务。

1.1.2、sed是什么

sed 命令是利用脚本来处理文本文件。它可以依照脚本的指令来处理、编辑文本文件。主要用来自动编 辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

1.1.3、sed的原理

但是使用 sed 命令对文本进行操作之前必须要知道它的原理,它是怎么工作中的,这个非常重要,否则 会影响操作的结果的正确性
sed 的工作流程主要包括 读取、执行和显示三个过程。
读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space)。
执行:默认情况下,所有的 sed 命令都在模式空间中顺序地执行,除非指定了行的地址,否则 sed 命令将会在所有的行上依次执行。
显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。
在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。


注意:默认情况下所有的 sed 命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非是用重定向存储输出。

1.1.4、sed的常用操作选项
1.sed 命令常见用法
通常情况下调用 sed 命令有两种格式,如下所示。

其中,“参数”是指操作的目标文件, 当存在多个操作对象时用,文件之间用逗号“,”分隔;而 scriptfile 表示脚本文件,需要用“-f” 选项指定,当脚本文件出现在目标文件之前时,表示通过指定的脚本文件来处理输入的目标文件。

  • sed [选项] '操作' 参数
  • sed [选项] -f scriptfile 参数

常见的 sed 命令选项主要包含以下几种。

  • -e 或--expression=:表示用指定命令或者脚本来处理输入的文本文件。
  • -f 或--file=:表示用指定的脚本文件来处理输入的文本文件。
  • -h 或--help:显示帮助。
  • -n、--quiet 或 silent:表示仅显示处理后的结果。
  • -i.bak:直接编辑文本文件。
  • -r, -E 使用扩展正则表达式
  • -s  将多个文件视为独立文件,而不是单个连续的长文件流

“操作”用于指定对文件操作的动作行为,也就是 sed 的命令。通常情况下是采用的“[n1[,n2]]”操作参数的格式。n1、n2 是可选的,代表选择进行操作的行数,如操作需要在 5~ 20 行之间进行,则表示为“5,20 动作行为”。常见的操作包括以下几种。

  • a:增加,在当前行下面增加一行指定内容。
  • c:替换,将选定行替换为指定内容。
  • d:删除,删除选定的行。
  • i:插入,在选定行上面插入一行指定内容。
  • p:打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,则以 ASCII 码输出。其通常与“-n”选项一起使用。
  • s:替换,替换指定字符。
  • y:字符转换。

1.1.4、用法示例

1.1.4.1、打印输出 -n
cat -n /etc/passwd > /tmp/passwd
cat -n 是加上序号
sed '' /tmp/passwd
打印原输出
sed 'p' /tmp/passwd
带有自动打印功能,p又再打印一遍
sed -n 'p' /tmp/passwd
-n 选项关闭自动打印功能
当然,如果-n后面加数字还能 显示  行号
sed -n '1p' /tmp/passwd
直接显示第1 行
显示范围
sed -n '1,3p' /tmp/passwd
sed -n '1p;3p;5p' /tmp/passwd
显示第一行 三行 五行
sed -n '3,+3p' /tmp/passwd
往后加3行,3行之后的再显示三行
奇数偶数表示
sed -n '1~2p' /tmp/passwd
1以及每隔2个,奇数
1从第一行开始,2选择每隔两行的行,p并打印出来
sed -n '2~2p' /tmp/passwd
偶数
#从第二行开始,2选择每隔两行的行,p并打印出来

sed -n '2~3p' /tmp/passwd
#从第二行开始,3选择每隔三行的行,p并打印出来

sed -n '$p' /tmp/passwd
显示最后一行
sed -n '/root/p' /tmp/passwd
将包含root的行打印出来 /root(需要匹配的内容)/p(打印) 文件名
与 grep root /etc/passwd 功能相同
sed -n '/bash$/p' /tmp/passwd
将bash结尾 打印出来 文件名
sed -n '/s...x/p' /tmp/passwd
/s...x/ 匹配包含一个字母 s,后面跟着任意三个字符,最后是一个字母 x 的行 p打印
sed -n '/[0-9]/p' /etc/passwd
/[0-9]/ 匹配包含至少一个数字的行

sed -n '/^root/p' /etc/passwd
包含以root开头的行
sed -n '1!p' /tmp/passwd
1!p 的意思是除了第一行之外的所有行都会被打印出来
sed -n '/nologin/!p' /tmp/passwd
除了nologin都能打印出来
sed -n '/root/=' /tmp/passwd
描文件 /opt/passwd,找到所有包含字符串 "root" 的行;对于每一行,输出它在文件中的行号。

 

sed -n '/root/=;/root/p' /tmp/passwd
多个模式匹配用分号或 者-e
sed   -n    -e    '/root/='     -e      '/root/p'    /tmp/passwd
这里,-e 允许你指定多个 sed 脚本,每个 -e 后面跟一个脚本。
第一个脚本 /root/= 匹配包含 "root" 的行并打印其行号,第二个脚本 /root/p 匹配包含 "root" 的行并打印该行内容。
sed -n '$=' zz.txt
相当于统计文件有几行
sed -n '$=;1p' zzz.txt
可以验证是逐行匹配
1.1.4.2、扩展正则r
sed 默认不支持扩展正则,如果要支持,需要加 -r 选项
sed -n '/^root|^shutdown/p' /etc/passwd
sed -nr '/^root|^shutdown/p' /etc/passwd
可结合管道
df -h | sed -n '2p'
注意:通常 -n 和 ‘p’ 一起使用
1.1.4.3、增加内容 i
sed '2ihello world' /tmp/passwd
表示操作发生在第二行,i: 表示插入操作,即在指定的行之前插入文本hello world

sed '3ihello\nworld' /tmp/passwd
sed '1ahello world' /tmp/passwd
 a在当前行下面增加一行
sed '/li/a hello world' /tmp/passwd
在li的后面加
sed '2,4a hello world' /tmp/passwd
sed '/li/a hello world;3p;3i shell' /tmp/passw
注意: a 或者 i 后面的所有内容都会被理解为需要添加的内容,也就是;无效
1.1.4.4、删除 d

sed  'd'  /tmp/passwd

sed '1d' /tmp/passwd
sed  '1,4d'   /tmp/passwd
删除一到四行
echo '' >> /tmp/passwd
echo '###' >> /tmp/passwd
在最后一行加入空行和###
把#开头的删除
sed  ‘/^$/d/'   /tmp/passwd     把空行删除
1.1.4.5、替换c
s/pattern/string/ 修饰符 查找替换 , 支持使用其它分隔符,可以是其它形式: s@@@ , s###
替换修饰符:
  • g 行内全局替换
  • p 显示替换成功的行
  • w /PATH/FILE 将替换成功的行保存至文件中
  • I,i 忽略大小写

实验

sed ‘/^root/ckgc’   /

sed '/^root/ckgc' /etc/passwd

把文件内容都换成yc

当然这里没有真的改变文件内容,只是输出到屏幕,如果想要真的替换,需要用 -i 选项,建议用 -i 之前对原文 件进行备份
1.1.4.6、搜索替换 s
c 指令使得整行内容全部替换, d 指令删除整行,如果要只替换某个关键词的话需要使用 s 指令
格式: sed 选项 ‘s/ 搜索的内容 / 替换的内容 / 动作 ’
搜索 root 所在行把第一个出现的 root 换成 ROOT
搜索 root 所在行,把所有出现的 root 都替换成 ROOT
搜索字母 o ,仅替换每行第二个 o 为大写 O
sed sed -n ‘s/o/O/2p’   /tmp/passwd
将 root 替换为空
sed -n 's/root//gp' /tmp/passwd
把 1-5 行的开头都插入 # 号
把所有 /sbin/nologin 换成yc , / 需要转义
sed  -n 's/\/sbin\/nologin/yc/gp'  /etc/passwd
但是使用默认的转义符之后阅读体验非常差,而且还容易写错,我们可以指定更有辨识度的转义符,例 如@,#, 数字都可以,将原来的 / 替换成我们想要的
我们只想搜索以 sync 开头的行并且前面加 # 号,那就需要保留 sync ,那就要把搜索的字符写成 & 就会被保 留不会一起替换,观察不加& 的区别。
忽略大小写 igp
1.1.4.7、插入文件 r
我们还可以将其他文件插入到当前文件当中处理 ,将/etc/hosts文件插入到/tmp/passwd 第三行后面
sed  '3r  /etc/hosts' /tmp/passwd
sed  '/2/r  /etc/hosts'    /tmp/passwd
在匹配到包含数字  2 的行之后读取并插入文件  /etc/hosts 的内容
插入的是包含的东西
sed -n '$r  /etc/hosts'  /tmp/passwd
1.1.4.8、另存为到文件 w
使用 w 指令将当前编辑的文件内容另存到其他文件中,如果目标文件已存在,则会将目标文件的内容覆盖。
sed 'w /tmp/hosts' /etc/hosts 这个命令是将 /etc/hosts 文件中的内容复制到 /tmp/hosts
文件中
如果 /tmp/hosts 文件不存在, sed 命令会创建它;如果存在, sed 将会覆盖该文件的内容。
如果你想将 /etc/hosts 文件的内容追加到 /tmp/hosts 文件末尾,可以使用 >> 符号来实现,如
sed 'w /tmp/hosts' /etc/hosts >> /tmp/hosts 。
从 /etc/hosts 另存为到 tmp/hosts 中的第一行
1.1.4.9、同时编辑 -e

可以用-e同时编辑,sed支持一个或多个-e参数

1.1.4.10、分组操作ne {} ()

当我们需要对一行数据进行多次操作的时候我们可以使用{}进行分组

将root变成大写,x也是变成大写

sed   -ne '/root/{s/root/ROOT/;s/x/X/g}'   -ne   '1,10p'    /tmp/passwd
如果只是想看1到10行,则-ne

分组 s//代表查找替换 ()代表分组 \1 代表留下的组 r:读取指定文件

从 ifconfig 命令的输出中提取 ens33 网卡的 IP 地址。通过 sed 的正则表达式匹配,它会找到
包含 inet 字段的行,并从中提取出 IP 地址部分,然后输出这个 IP 地址
1.1.4.11、读取完退出

正常情况下sed会在读取完所有数据行之后退出,但是我们可以随时使用q指令来提前退出sed

注意:q不要和-i一起使用,以免覆盖源文件

1.1.4.12、sed脚本

有时我们需要对文件进行的增、删、改比较多,但是一条一条修改比较麻烦,所以对于指令比较多的情 况,我们可以先将所有的sed 指令写入一个文本文件中,然后通过 sed 的 -f 选项读取该指令文件即可实现多指令操作。
使用 sed 命令迁移符合条件的文本时,常用到以下参数 .
  • H:复制到剪贴板;
  • g、G:将剪贴板中的数据覆盖/追加至指定行;
  • w:保存为文件;
  • r:读取指定文件;
  • a:追加指定内容。具体操作方法如下所示。
  • I,i 忽略大小写
1.1.4.13、 sed的高级应用
-r 匹配正则
保留空间的使用
结合变量使用
1.1.4.14、 拓展和总结
总结
=是行号,/p是打印
PIDNet实战:如何在Cityscapes数据集上实现93.2 FPS的实时语义分割(附完整训练代码) 本文提供了在Cityscapes数据集上实现实时语义分割模型PIDNet的完整工程实践指南。PIDNet凭借其独特的比例-积分-微分三分支架构,在CVPR 2023上取得了速度与精度的出色平衡。文章详细介绍了从环境配置、数据预处理、模型训练到性能优化与部署的全流程,并分享了实现93.2 FPS高推理速度的关键技巧与代码。 阅读详情

相关推荐

网格聚类 Grid Clustering/Grid-based Clustering

本文主要简单介绍了网格聚类的基本概念,优缺点,应用场景,建模时的注意事项,评价指标,实现方法,python示例和模型参数等。

JasonH2021的博客 4827

Sed详解

1.Sed 简介 sed 是一种新型的,非交互式的编辑器。它能执行与编辑器 vi 和 ex 相同的编辑任务。sed 编辑器没有提供交互式使用方式,使用者只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出。sed 编辑器没有破坏性,它不会修改文件,除非使用 shell 重定向来保存输出结果。默认情况下,所有的输出行都被打印到屏幕上。 1.1sed 工作过程 sed 编辑器逐行处理文件(或输入),并将输出结果发送到屏幕。sed 的命令就是在 vi和 ed/ex 编辑器中见到的那些。sed 把...

hidingin 2万+

DCM4CHEE Archive Light 应用配置-存储配置

本文介绍了在DICOM归档系统中配置和管理存储的方法,包括通过用户界面和LDAP导入两种方式。主要内容包括: 存储配置概述:用户可根据需求配置单个或多个存储设备,支持在磁盘空间不足或多任务并行时使用。存储分为Archive设备级(序列元数据存储)和Application Entity级(对象存储/元数据存储)。 用户界面操作: 设备级存储配置:通过菜单导航添加/编辑存储描述符,设置Storage ID、URI等关键参数 应用级存储引用:在设备扩展和网络AE中分别配置元数据和对象存储引用 LDAP配置方法:

洪城叮当的博客 1415

sed详解

文章目录一、什么是sed二、 sed和vim的区别三、作用四、定位( pattern过滤)五、 查操作六、 删操作七、 增加编辑命令1. 在指定行的后面添加信息2. 在指定行前插入信息八、修改文件信息2. 高级信息替换方式:后项引用前项内容3. 示例九、 应用9.1 分析Ansible主机清单9.2 分析mysql配置文件 一、什么是sed sed全称(stream editor)流式编辑器,Sed主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等,工作流程如下 sed 是一种在线的、

人丑就要多读书的博客 1万+

PAM4信号测试实战:从眼图分析到误码率测量的技术演进

在高速数字系统设计中,信号完整性测试是确保数据传输可靠性的核心环节。其基本原理在于通过时域和频域分析,精确评估信号在传输过程中的质量衰减与失真。随着数据速率向56Gbps及以上演进,传统的NRZ编码面临带宽瓶颈,而PAM4调制技术通过在每个符号周期内承载更多比特信息,成为提升信道效率的关键路径。这项技术的工程价值在于,它允许在相同带宽下实现翻倍的数据吞吐量,这对于数据中心互联、PCIe 6.0及800G以太网等高速接口至关重要。然而,PAM4信号电平间距更小,对噪声和抖动极为敏感,导致其原始误码率显著升高,

weixin_42522817的博客 655

生成对抗网络——CGAN(代码+理解)

CGAN(Conditional Generative Adversarial Network)模型是一种 深度学习模型,属于生成对抗网络(GAN)的一种 变体。它的 基本思想是通过 训练生成器和判别器两个网络,使生成器能够生成与给定条件 相匹配的 合成数据,而判别器则 负责区分真实数据和 生成数据。相比于GAN它引入了条件信息(y),使得生成器可以生成与给定条件相匹配的合成数据,从而提高了生成数据的可控性和针对性。

CXDNW的博客 1万+

sed 命令详解

一、sed概念及工作原理 1、sed 工具概述 sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。 sed也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于Shell脚本中,用以完成各种自动化处理任务。 sed 依赖于正则表达式 2、sed 的工作流程 主要包括读取、执行和显示三个过程。 读取:sed 从输入流(文件、管道、标准输入)中读取一行内容

weixin_56270746的博客 1万+

SAP ABAP实战:用BAPI_PO_CREATE1创建采购订单时,如何巧妙处理PBXX和PB00条件类型?

本文深入探讨了在SAP ABAP开发中使用BAPI_PO_CREATE1创建采购订单时,如何有效处理PBXX和PB00条件类型的难题。通过分析外协加工订单的特殊需求,提供了从问题定位到解决方案的全流程方法,包括数据流向追踪、字段控制策略和增强实现方案,帮助开发者解决条件类型自动生成的业务痛点。

weixin_30614109的博客 823

shell编程之正则表达式grep,sed,awk

shell编程之正则表达式grep,sed,awk一、文本处理器二、grep工具三、sed 工具1.sed工具概述2.sed 命令常见用法3.sed 命令与正则表达式结合使用4.删除符合条件的文本5.替换符合条件的文本6.使用脚本编辑文件四、awk 工具用法示例1.按行输出文本2.按字段输出文本3.通过管道、双引号调用 Shell 命令 一、文本处理器 在 Linux/UNIX 系统中包含很多种文本处理器或文本编辑器,其中包括VIM 编辑器与 grep 等。 而 grep,sed,awk 更是 shell

m0_49569199的博客 264

17、神经网络训练算法与高阶模糊Cohen - Grossberg神经网络稳定性分析

本文介绍了一种新的数据驱动算法用于神经网络训练,该算法继承三次样条权重函数的优点,具有简单架构和良好泛化性能,并通过并行机制显著提升训练速度。同时,研究了高阶模糊Cohen-Grossberg神经网络(HOFCGNN)在可变及无界延迟下的稳定性,利用M矩阵理论和向量Lyapunov函数方法,证明了系统平衡点的存在性、唯一性和全局指数稳定性。研究成果为神经网络的高效训练与稳定应用提供了理论支持和技术路径。

b9c0d的博客 147

第7章: MMU notifier在AMD GPU驱动中的应用

AMD GPU驱动利用MMU Interval Notifier机制实现共享虚拟内存(SVM)和异构内存管理(HMM)。通过分析AMDGPU内存架构(VRAM、GTT、Userptr)和Buffer Object设计,重点探讨了Userptr零拷贝机制如何依赖MMU notifier保持CPU/GPU内存一致性。HMM框架进一步实现统一地址空间和透明页面迁移,AMDGPU通过amdgpu_hmm.c实现两种invalidate回调(GFX和HSA模式),处理不同场景下的内存失效同步问题。

图形/计算GPU的驱动与虚拟化技术分享园地 2462

Shell编程三剑客之Sed

Shell编程三剑客之Sed一: 文本处理器1.1:sed工具概述1.2:sed的工作流程1.2.1:读取1.2.2:执行1.2.3:显示1.3:sed命令常见方法1.3.1:常见的sed命令选项1.3.2:常见的操作1.4:sed用法示例1.4.1:输出符合条件的文本(p 表示正常输出)1.4.2:sed 命令与正则表达式结合使用1.5:删除符合条件的文本(d)1.6:替换符合条件的文本1.7:迁移符合条件的文本1.8:使用脚本编辑文件1.9:sed 直接操作文件示例二:sed命令总结 一: 文本处理器

m0_47219942的博客 654

拼多多Android面试题及参考答案

Android 系统采用分层架构设计,从底层到上层依次为Linux 内核层硬件抽象层(HAL)系统运行时库层应用框架层应用层,共五层。位置:Linux 内核层与系统运行时库层之间,是“硬件与系统的隔离层”。核心作用:屏蔽硬件差异,为上层提供统一的硬件访问接口,解决 Android 开源与硬件厂商闭源的矛盾,具体功能如下:硬件能力抽象:将硬件的具体实现(如不同厂商的摄像头芯片、音频芯片)封装为标准化接口(如Camera HALAudio HAL。

大模型大数据攻城狮的专栏 1278

Shell 编程三剑客之Sed

文章目录引言一、Sed工具概述二、Sed基本语法三、Sed用法示例1、输出指定的行1.1 Sed命令输出指定行1.2 Sed结合正则表达式输出指定行2、插入符合条件的行3、删除符合条件的行4、替换符合条件的文本4.1 字符串替换4.2 先备份再修改数据5、迁移符合条件的文本6、使用脚本编辑文件四、Sed应用案例1、调整vsftpd服务配置2、修改DNS配置文件2.1 修改主配置文件2.2 修改区域配置文件2.3 修改区域数据配置文件五、总结 引言 在Linux/UNIX 系统中包含很多种类的文本处理器或文本

qq_45088125的博客 2153

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【运维进阶】shell三剑客

Shell三剑客指Linux系统中三个核心文本处理工具:grep(文本过滤)、sed(流编辑)和awk(文本分析)。它们各具特色且配合使用能高效完成复杂文本处理任务,是Shell脚本和系统管理的必备工具。 grep用于快速检索文本,sed擅长行编辑和替换,awk则专注于格式化输出和数据分析。三者常组合使用,例如从日志中提取特定信息并统计。值得注意的是,sed默认不修改原文件,使用-i选项需谨慎。 掌握这三个工具能大幅提升Linux环境下的文本处理效率,其中sed和awk因功能强大被并称为Unix两大文字处理

weixin_74491577的博客 1113

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Shell 编程之正则表达式与文本处理器

正则表达式又称正规表达式、常规表达式。在代码中常简写为regex、regexp 或 RE。正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,简单来说,是一种匹配字符串的方法, 通过一些特殊符号,实现快速查找、删除、替换某个特定字符串。正则表达式是由普通字符与元字符组成的文字模式。模式用于描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

ASDyushui的博客 2332

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

shell三剑客——sed

文章目录一、文本处理器1.1:sed工具概述1.2:sed的工作流程1.2.1:读取1.2.2:执行1.2.3:显示1.3.1:常见的sed命令选项1.3.2:常见的操作1.4:sed用法示例1.4.1:输出符合条件的文本(p 表示正常输出)1.4.2:sed 命令与正则表达式结合使用1.5:删除符合条件的文本(d)1.6:替换符合条件的文本1.7:迁移符合条件的文本1.8:使用脚本编辑文件1.9:sed 直接操作文件示例二、sed命令总结 一、文本处理器 在 Linux/UNIX 系统中包含很多种文

weixin_49022211的博客 1396

Shell编程之正则表达式与文本处理器

正则表达式又称正规表达式、常规表达式。在代码中常简写为regex、regexp或RE。正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,简单来说,是一种匹配字符串的方法,通过一些特殊符号,实现快速查找、删除、替换某个特定字符串。字符说明将下一个字符标记为一个特殊字符,或一个原义字符,或向后引用,或一个八进制转义符匹配输入字符开始的位置匹配输入字符的结束为止匹配前面的子表达式0次或者多次匹配前面的子表达式一次或多次?匹配前面的子表达式0次或者一次。

2301_76584825的博客 1605

Shell编程三剑客——grep、sed、awk详解

在Linux/UNIX系统中包含很多文本处理器或文本编辑器,其中grep、sed和awk是shell编程中经常用到的文本处理工具,因此,被业内的人广泛的称之为“shell编程三剑客”。 grep命令工具 grep命令工具,在日常生活中,会经常用到,这里也就不多说了,如果有不明白的朋友,请参考博文:Shell脚本应用之正则表达式详解,里面详细介绍了grep命令的相关参数及使用, sed命令工具 se...

bushi1787的博客 913

Shell脚本——三剑客之Sed篇

三剑客之sed篇引言一、Sed编辑器1.1Sed概述1.2 sed工作流程1.3 sed命令常见用法1.3.1 基本格式1.3.2 sed命令常用选项1.3.3 sed常用的操作命令二. sed命令使用2.1 打印内容2.1.1 打印全部内容2.1.2 查看文件,打印全部内容2.1.3 打印指定行内容2.1.4 打印指定第几行到第几行内容2.1.5 输出所有奇数行2.1.6 输出所有偶数行2.1.7 输出第 1-5 行之间的奇数行2.1.8 输出第 10 行至文件尾之间的偶数行2.1.9 直接显示第二行内容

weixin_59663288的博客 1496

shell 编程之正则表达式与文本处理器

正则表达式是一种用于匹配字符串的强大工具,通过普通字符和元字符的组合,能够快速查找、替换或删除特定字符串。它广泛应用于脚本编程和文本编辑器中,如Linux系统中的grep、sed等工具以及Python语言。正则表达式对系统管理员尤为重要,能够帮助快速筛选重要信息,如登录失败或服务启动失败等。此外,邮件服务器等软件也依赖正则表达式过滤垃圾邮件。基础正则表达式是正则表达式的核心部分,常用元字符如“^”表示行首,“$”表示行尾,中括号“[ ]”用于匹配集合字符。通过grep命令,可以实现查找特定字符、反向选择、匹

tkzcmz的博客 1440

Shell编程:文本处理器(sed)

`sed` 是一种流编辑器(Stream Editor),用于对文本文件进行行级别的处理。与 `vim` 不同,`sed` 处理时不直接编辑文件,而是将文件的每一行读取到临时缓冲区中(称为“模式空间”或 pattern space),在该缓冲区中执行编辑命令,最后将处理结果输出到屏幕或指定的文件。本篇将详细讲解。

shyuu的博客 1805

第一章Shell编程之正则表达式与文本处理器

Shell编程之正则表达式与文本处理器

2401_86349554的博客 1445
上一篇: 正则表达式和文件处理工具
下一篇: 【Shell 编程三剑客】shell-awk命令详解(理论+实战)
YCyjs
博客等级 码龄2年 4496粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值