awk基本使用方式详解

awk基本用法、awk应用案例及综合脚本 如果要输出到屏幕可以使用命令awk '{a[$1]++}END{print a["abc"]}' shu.txt。按照awk逐行处理的工作特点使用awk '{a[$1]++}' shu.txt 走完每一行得到下列结果。准备一个文档,里面有6行,每行分别是abc、xyz、abc、opq、xyz、abc 然后。用法格式:BEGIN{ 任务1 }{ 任务2 }END{ 任务3 }BEGIN任务 执行1次,读取文档之前执行。END任务 执行1次,读取文档之后执行。 阅读详情

在这里插入图片描述

使用linux系统的人或许都听说过linux三剑客,它们分别是awk、sed和grep,在一切皆文件的linux系统中,这三种文本处理工具的使用显得非常重要。今天就主要介绍三剑客之一的awk,使用awk的优势很多,很方便快速,功能非常之强大,其也是Linux及Unix环境中现有的功能最强大的数据处理引擎之一。


为什么使用awk

awk作为linux中强大的文本处理工具,实际上也是一门编程语言了。因为有awk的存在,一些较为复杂的数据清洗及数据筛选的工作可以以很短的命令轻易地被解决而不需要每次都写一个脚本,正因为其在命令行运行的特点也使其能够通过管道与Shell脚本很好的交互,这是其他编程语言所不能及的(也正是因此听说在很多运维的面试中关于awk的问题的出现几率非常高)。

另外一个特点是awk读取文件时默认按一条条的记录进行读取的(默认就是一行一行地读取,但是awk是可以设定记录分隔符从而不仅仅是按行读取记录的),而在某些编程软件比如python中,若是使用pandas进行读取文件需要先将整个文件载入到内存,这样就十分地占据内存,同时在进行操作时也相对更费时间。但若是在awk中由于其按行操作,若是匹配到目标字符时就不再向后读取文件,相对更加节省内存,也更符合某些工作需求。

当然awk不是万能的,若是将非常复杂的文本处理工作交给awk可能就有点不划算了。

awk的使用方式

使用awk的命令一般为两种,即:

# 1. awk 'pattern {action}' filename
# 2. awk '{pattern + action}' filename

其中第一种使用方式最常用,也更与一般的问题解决方式契合(即先设定条件或“模式”,再对符合条件的目标执行“动作”),而第二种将“模式”和“动作”放在一起,可读性较差同时还可能导致代码混乱。任意的使用方式,只要能得到结果即可,在今天的文章中也只介绍第一种。接下来列出其中的一些要点:

  • pattern代表的是筛选要使用的模式,也可以理解成筛选条件,符合条件的才被执行后面的action中的命令。
    + pattern中能支持的筛选方式有正则表达式、比较计算、逻辑与(pattern && pattern)、逻辑或(pattern || pattern)、逻辑取反(!pattern)、改变优先级(如使用括号)等
  • 使用单引号将pattern和action两部分包围代表这是一个部分不可分割,awk识别这个部分中的模式和命令,并对要操作的文件进行相应的处理。这里最好只使用单引号,因为双引号有时候会出问题,文章后面会解释。
  • action即对符合pattern筛选的记录进行某些动作,可以是linux中的任何语句,但常用的命令有print、split、substr、sub、gsub等。
  • action中使用多个语句需要使用分号分割(与shell中相同)。
  • pattern和action在某些情况下可以省略。
  • 一个awk命令可以包含多次pattern{action},直接连用即可。
  • 若没有要读取的文件,那么需要通过管道命令将要处理的数据交给awk进行处理,如在服务器中对某些记录(如ifconfig)的处理。
  • awk中支持流程控制语句,如while、if、do/while、for、break、continue等等,可以将shell命令和其联动,因此其可以写出很复杂的语句,这种较复杂的语句一般放在脚本中被执行。

除了上面的要点外,awk也可以接一些参数,接下来介绍两种最常用的参数:

  • -f 有时候若是awk命令要执行的代码较多,写在命令行上会很混乱,这时将这些代码写在一个脚本中,使用-f参数表示要执行的pattern和action都来自-f后接的文件。
  • -F 此参数指定用于awk分隔字符的字符,awk默认的分隔字符为空格或者tab键,比如若是csv文件,那么你可以设定-F 为,。

接下来展示几个例子:

使用比较进行筛选

cat /etc/passwd |awk -F ':' '$1=="root" {print $7}'
# 使用上面的命令查看root用户默认使用的shell
# 运行结果如下图,可以直接拷贝到shell命令行中去试试哦,得到的结果应该是一样的。

在这里插入图片描述
可以看到root用户默认使用的shell是bash。分析一下上面的例子:

  • 首先使用cat命令查看passwd文件,并使用管道命令将结果传递给awk进行处理。
  • 由于passwd中的信息都是以冒号:分割的,和默认分隔符不同,因此需要制定要使用的分隔符为:
  • 刚刚提到了awk是逐个读取每条记录的,默认情况也就是逐行读取的,对于每一行中的内容都使用分隔符分隔,这样得到了一个类似列表的结构,使用$符号加上数字就表示要取出列表中的这个数字对应下标的字符串,注意$0代表的是整行。
  • 后面的单引号中的内容就是一个标准的pattern{action}模式,前面pattern中的$1=="root"表示需要筛选的是被分隔符分隔得到的列表中的第一个字符串为"root"的行,只有第一个字符串为"root"才会被筛选。
  • 这里解释一下刚刚提到的为什么不能使用双引号在pattern{action}外面,这是因为在linux中双引号包含的内容会被linux shell获取,从而导致$1这样的变量被shell误解为是shell自身的变量而不是awk中的变量,只有使用单引号才不会导致这样的问题。
  • 通过筛选的行被传给action,这里的action对行进行处理,在这里使用print打印出第七个部分,也就是root所使用的shell。执行结果与预期相同。

当然数值比较也是一样的,这里就不展示例子了。

使用正则表达式进行筛选

正则表达式这里就不多介绍了,其对于编程的重要性不言而喻,linux中的正则表达式也是很重要的,接下来使用正则表达式达到上面例子的效果:

cat /etc/passwd |awk -F ':' '/root/ {print $7}'
# 其实也非常的简单,将要匹配的正则表达式使用两个斜杠包裹起来就行了,这里匹配含有root字符的记录
# 结果也是/bin/bash

逻辑符号

cat /etc/passwd |awk -F ':' '/home/&&$7=="/bin/bash" {print $1}'
# 这里的&&表示前后的两个条件都要符合才行,即含有home目录且默认shell为bash的用户名(第一列)
# 运行结果是很多人名,就不展示出来了,读者可以自己拷贝过去试试

awk语句中的BEGIN和END

上面提到过awk中可以有多个pattern{action},只需要直接连用即可,这里的BEGIN和END就是pattern的一种特殊形式,BEGIN携带的action是在开始处理文本数据之前先要执行的,而END携带的action则是在处理文本数据结束后才执行的,因此中间的处理部分可以被称为main部分,main部分也可以有多项。不要小看这两条语句,实际应用中是十分有用处的。

先看一个简单的例子吧,比如想要看使用bash作为默认shell的用户为哪些,那么可以使用如下的命令:

cat /etc/passwd | awk -F ':' 'BEGIN {print "开始咯"} $7=="/bin/bash" {print $1} END {print "结束咯"}'
# 例子可以直接拷贝到shell命令行运行试试
# 运行结果

在这里插入图片描述
中间有很多用户名,考虑隐私问题不能展示。不过可以看到运行的结果中首先打印出开始,最后再以打印结束而结束,中间的条目是由$7=="/bin/bash" {print $1}所产生的,也就是说BEGIN和END部分都只执行一次,而内部的语句则一次读取一条记录直到整个文件信息读完,这个点需要注意!

接下来展示一个比较有用的例子,即对ifconfig内容的处理,ifconfig命令是用于显示或设置网络设备的命令,默认情况下使用ifconfig命令得到的结果为很长的几段,并且段与段间有一个空行,如下图所示:
在这里插入图片描述
若是想要取得其中ipv4的地址,也就是inet后的内容。接下来分析一下处理过程:

  • 联系到上面提到的记录分隔符,若是将一个段落作为一条记录的读取那么将会比较方便。
  • 那这时候我只需要将分隔符设置为两个换行符(\n\n)即可,如上图所示。
  • 设置分隔符最好在BEGIN中设置,因为在BEGIN中设置的选项会在一开始就被awk获取到,若是在main部分才设置,会先读取一条记录后才获取到设置的分隔符,这个读者感兴趣可以试试。
  • 经过计算后,发现地址在每个段落中的第六个位置(即$6)。

分析结束后写出的代码:

ifconfig |awk 'BEGIN {RS="\n\n"} {print $6}'
# 这里的RS是awk的一种内置变量,意思是记录分隔符。awk中的内置变量有十多个,可以直接使用
# 后面会列出awk中的内置变量

得到的结果如下图:
在这里插入图片描述
若是想要将结果都打印在一行中以tab符号分隔,可以再加一个内置变量即输出分隔符(OFS),默认的输出分隔符是换行符,所以我们看到的每条结果都是以换行符隔开的,使用OFS可以自定义分隔符:

ifconfig |awk 'BEGIN {RS="\n\n";ORS="\t"} {print $6} END {print "\n"}'
# 每个命令间以分号分隔即可
# 这里最后输出结束没有换行符,所以在END处多加了一个换行符

在这里插入图片描述

执行文件中的awk命令

若是执行较短的命令是没有必要将命令写到文件中的,但若是命令很长,逻辑也较为复杂,那么写在脚本中则会比较清晰明了且不易出错,这里我将上面的例子写到文件中做一个展示:

文件内容:
在这里插入图片描述

运行结果同上。

awk中的内置变量

图源:https://www.runoob.com/linux/linux-comm-awk.html
-
其中$、FS、NR、RS等较为常用,其它的变量在需要使用时可以再去深入理解。

叮

awk的功能很强大,它可以完成很多工作,写成脚本也可以写的很复杂,有兴趣的读者可以去看一下骏马金龙这位博主的18个awk的经典实战案例,其中的案例相对较复杂,将awk能完成的较经典的案例都讲了一遍,并且讲解十分清晰,值得一看。分别有博客和视频两版。

参考:https://www.bilibili.com/video/BV1BJ411X7QN?p=14
参考:https://www.runoob.com/linux/linux-comm-awk.html

AWK基础教程 前言 之前针对WorkerHub小程序做的数据分析文章 XXX 收到了一些小伙伴的回复,点名要学习数据分析,其实我也是一知半解,想着来写几篇文章简单聊下我分析的过程。 首先是数据清洗和统计了,这块我并没有用诸如Python之类的脚本语言,虽然Python提供了很多强大的数据分析库如Pandas、Numpy等,但是毕竟要麻烦一些,还要写个脚本,装一堆库(PS:其实就是懒)。 我用的是一个老的Unix工具 AWK,虽然历史比较久远,但是它简洁和丰富的功能可以称之为神器,同时也是后台同学必须要掌握的一个工具, 阅读详情

相关推荐

Linux 三剑客之 awk 实战详解教程

我们知道 Linux 三剑客,它们分别是:grep、sed、awk。在前边已经讲过 grep 和 sed,没看过的同学可以直接点击阅读,今天要分享的是更为强大的 awk。 sed 可以实现非交互式的字符串替换,grep 能够实现有效的过滤功能。与两者相比,awk 是一款强大的文本分析工具,在对数据分析并生成报告时,显得尤为强悍。 awk 强大的功能,是一般 Linux 命令无法比拟的。在本文中,我不会告诉你 awk 也是一种编程语言,免得会吓到你。我们只需把它当做 Linux 下一款强大的文本分析工具即可

696

awk的使用

linux里面的awk命令

xiaoliu的博客 3106

CST-Python(Pycharm如何与CST联合仿真,获取S参数)

我们想使用Python与CST联合仿真,其实是不需要自己下载Python的,因为CST在下载的时候就自带了Python3.6,我们只需要找到并将软件的环境设置到相应位置,即可联合仿真。(我的保存路径为D:\Program Files (x86)\CST Studio Suite 2020,在寻找时可以将前面切换成自己的保存路径,后面不需要修改)在CST帮助文档(打开CST软件,按F11即可直接访问帮助文档)里面,进行如下操作,便可以看到CST适配的Python版本为Python3.6!

weixin_52696285的博客 5648

AWK 使用详解

awk的工作原理 一次读取一行文本,按输入分隔符进行切片,切成多个组成部分,将每片直接保存在内建的变量中,$1,$2,$3....,引用指定的变量,可以显示指定断,或者多个断。如果需要显示全部的,需要使用$0来引用。可以对单个片断进行判断,也可以对所有断进行循环判断。其默认分隔符为空格 awk的基本用法格式 awk [options] 'program' FILE...... 语句之间用分号分隔 [options] -F : 指明输入时用到的字段分隔符 -v var=VALU

lantian000的博客 3892

Multisim实战:从零搭建体温检测报警电路(附完整仿真文件+调试技巧)

本文详细介绍了如何使用Multisim从零搭建体温检测报警电路,涵盖LM35温度传感器、LM358运算放大器等核心器件的选型与连接,以及信号调理、阈值比较和数码管显示等关键电路设计。附赠完整仿真文件和实用调试技巧,帮助电子工程初学者快速掌握体温温度检测系统的设计与实现。

weixin_28285943的博客 292

Synopsys 逻辑综合之 ICG

文章摘要: ICG(集成时钟门控单元)是一种用于降低时钟功耗的专用逻辑单元,通过控制时钟信号的传播实现节能。其核心原理是在寄存器前插入门控逻辑(如gclk=clk&en),但需避免直接使用AND门以防止毛刺,转而采用带锁存器的专用ICG单元。在RTL设计中,符合条件(如稳定使能信号)的if(en)结构可被综合工具(如DesignCompiler)自动识别并替换为ICG。使用时需配置时序检查(如PrimeTime分析使能路径、门控时钟延迟),并注意避免组合逻辑使能、多级门控等误区。ICG是芯片低功耗设

Serven的博客 4349

awk 学习

录自《《LINUX与UNIX SHELL编程指南》读书笔记》(zqf620) AWK介绍 0.awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk。 1.awk语言的最基本功能是在文件或字符串中基于指定规则来分解抽取信息,也可以基于指定的规则来输出数据。完整的awk脚本通常用来格式化文本文件中的信息。 2.三种方式调用awk 1) awk [

努力的瓜子 830

PyTorch复现EEG-TCNet踩坑记:从BCI IV2a数据到TCN块缺失的完整解决方案

本文详细解析了使用PyTorch复现EEG-TCNet模型的全过程,重点解决了BCI IV2a数据集预处理和TCN模块缺失的技术难题。通过标准化数据流程、跨受试者验证策略以及三种因果卷积实现方案,为运动想象分类任务提供完整解决方案,帮助研究者高效实现模型复现与优化。

weixin_30699955的博客 319

AWK详解

awk详解与使用

wq1205750492的博客 1万+

Github多人协作

最近有门课程需要几个人一起开发一个项目,此前我们基本都是单干的,多人合作意味着需要及时将我们每个人的代码进行合并,U盘传文件这种方式太慢了,效率不行,而且没法解决两个人同时修改一个文件的问题,这次我们就尝试使用Github来协助开发。下面就来记录一下这次开发遇到的一些问题和解决的方法。 Git的安装 从官网下载最新版按照默认安装即可。 此处不多加说明。 Git常用命令 在此放上一...

yzr1216的博客 1万+

SCI一区论文投稿终极技巧:Expert Systems With Applications;Knowledge-Based Systems

投稿计算机1区论文(如KBS、ESWA)的核心技巧包括:1)关键词选择需平衡范围与相关性,避免过细或过泛;2)研究内容聚焦单一核心创新点,避免内容分散;3)必须设计消融实验量化创新点的贡献;4)公开实验代码和数据集,确保可验证性;5)合理使用AI工具仅辅助写作,核心内容需自主完成;6)实验数据必须真实可靠。特别强调1区期刊对创新性和实验严谨性的高要求,需避免常见拒稿原因如内容分散、缺乏验证等。这些策略可提高投稿成功率,但前提是研究本身具有实质性创新。

ZhangJiqun&191cm&85kg 1153

awk的基本使用和调用方式

awk的基本使用和调用方式 1.awk的基本使用 与sed相比,awk不仅能以行为单位处理文件,还可以以列为单位处理文件。awk缺省的行分隔符是换行,缺省的列换行符是连续的空行和Tab,但是行分隔符和列分隔符都可以自定义,比如/ect/passwd文件的每一行有若干个字段,字段之间以:分隔,就可以重新定义awk的列分隔符为:并以列为单位处理这个文件。awk实际上是一门很复杂的脚本语言,还有像C

step_ma的博客 857

大数据分析利器:Tableau实战教程从入门到精通

你有3家分店,每月收集1000条销售数据(日期、分店、口味、销售额、订单数);想用Excel分析“哪家分店最赚钱”,但要做透视表→改格式→画柱状图,耗时30分钟,还经常因为公式错误返工;想看看“草莓味奶茶的月度销量趋势”,得手动筛选数据、调整折线图轴范围,稍不注意就漏看关键节点;想把分析结果分享给合伙人,Excel表格太抽象,对方盯着数字问“你到底想告诉我什么?

AI架构师小马 1491

awk的基本使用方法

awk是处理文本文件的一个应用程序,几乎所有 Linux 系统都自带这个程序。 它依次处理文件的每一行,并读取里面的每一个字段。对于日志、CSV 那样的每行格式相同的文本文件,awk可能是最方便的工具。 awk其实不仅仅是工具软件,还是一种编程语言。不过,本文只介绍它的命令行用法,对于大多数场合,应该足够用了。   一、基本用法 awk的基本用法就是下...

老率的IT私房菜 5645

AI时代的软件质量保证新方法论

3.2.1 质量保证的方法论 质量保证(Quality Assurance, QA)是一种系统化的方法,用于确保产品或服务符合预定的质量标准。在AI时代,软件质量保证的方法论需要适应不断变化的AI技术和应用场景。 3.2.1.1 质量管理体系的构建 首先,构建一个完善

AI天才研究院 1348

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

shell awk使用详解

目录 awk基本格式 常用命令选项 awk执行过程分析 AWK内置变量  重定向到另一个文件 语法 自定义变量 awk内部自定义 将外部变量值传递给awk 运算符 循环结构 for while do while break continue next exit 数组 创建数组 数组长度 输出数组内容 判断键值是否存在 删除键值 正则 if中使用 ...

今天吃了吗的博客 4208

深度学习工具包 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")

【linux】awk的基本使用

awk是shell中一个强大的文本处理工具,被用于处理文本和数据当你心中默念想要使用类似于处理某一行,处理某一列 的文本的功能时,就是awk登场的时候了举个简单的例子是,当我们想知道自己的所有网卡的名字时,可以用ifconfig查看我们会看到类似于上述信息一样密密麻麻的文字,当然我们可以手动CTRL C CTRL V 把网卡名称拿出来,但是如果希望有一种写法可以不用手动去查看获取的话,可以试试使用awk。

andyshi1998的博客 2498

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

awk基本用法及案例详解

0 引言 awk是一个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。 awk工作原理: #awk -F : '{print $1,$3}' /etc/passwd (1) awk使用一行作为输入,并将这一行赋给内部变量$0,每一行也可称为一个记录,以换行符结束 (2)然后行被:(默认是空格或制表符)分解成字段(或域),...

石榴姐yyds 1499

awk的基本使用

1.awk简介awk:文本处理工具awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。2.awk语法 awk ‘{pattern + action}’ {filenames} 其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。 3.使用方式1. 命令行方式awk [-F

Pencil的博客 507

【shell】awk基本用法

awk基本用法及举例

sodaloveer的博客 3211

awk详解

Linux awk 命令详解

JintGuo的博客 1774

shell编程之awk命令详解

我们可以在输出内容中添加注释、自定义分隔符等。例如,对于grades.txt。

2301_81704123的博客 1574

Linux awk命令基本使用方法

Linux awk命令基本使用方法 awk命令是一种处理文本的语言,是一个强大的文本分析工具,比较适用于文本的格式化。 awk命令结构: awk 'BEGIN{commands} pattern{command} END{command}' awk工作流程可以分为三个部分: 读取输入文件之前执行的代码段(由BEGIN关键字标识) 主循环执行输入文件的代码段 读取输入文件之后的代码段(由END关键字 标识) 基本用法: 用法一: awk '{[pattern] action}' {filename}

qq_41571224的博客 8086

awk使用方法详解

awk工具 awk 选项 ‘模式或条件{编辑命令}’ 文件1 文件2…. //过滤并输出文件中符合条件的内容 awk -f 脚本文件 文件1 文件2… //从脚本中调用的编辑指令,过滤并输出内容 awk包含几个特殊的内建变量(可直接用)如下所示: FS:指定每行文本的字段分隔符,默认为空格或制表位; NF:当前处理的行的字段个数; NR:当前处理的行的行号(序数); $0:当前处理的行的整行内容; $n:当前处理的行的第n个字段(第n列); FILENAME:被处理的文件名; RS:数据记录分隔,默认为\n

empty_csx的博客 3521
上一篇: 二代测序技术之illumina测序技术原理简介
下一篇: python3 字符串格式化(%和format)
你大佬来啦
博客等级 码龄7年 322粉丝 62原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值