详解grep(一)grep基础、语法格式、常用选项与退出状态码的案例解析

2023-11-13

目录

一、GREP基础

1.1 grep的全称

1.2 grep语法格式

二、grep常用选项

2.1 长短选项的说明

2.2 显示常用信息

2.3 控制匹配模式的选项

2.4 控制输出内容的选项

2.5 控制输出行前缀的选项

2.6 控制输出行上下文的选项

2.7 文件和目录的选择选项

三、退出状态码

四、不同的搜索引擎(不同的grep程序)

五、sed、awk、grep三剑客默认所使用的正则表达式类型


一、GREP基础

1.1 grep的全称

global search expression and print,全局搜索正则表达式并打印输出

用于查找内容包含指定范本样式的文件。grep指令会把含有范本样式的那一行显示出来。而这个范本样式也就是我们在sed中所说的模式,模式可以是正则表达式也可以是普通的模式

 

1.2 grep语法格式

grep OPTIONS PATTERN INPUT_FILE_NAMES

  • OPTIONS:指定0至多个

  • PATTERN:即为模式,前面没有-e PATTERN或-f FILE时指定的PATTERN才会被grep识别。否则紧跟在-e选项或者-f选项后面的才会被grep程序识别成PATTERN,而除此之外的PATTERN将被错错误识别成文件名。
  • INPUT_FILE_NAMES:可以指定0至多个INPUT_FILE_NAMES
#示例:过滤IP地址
[tyson@localhost ~]$ ifconfig |grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"
        inet 192.168.43.49  netmask 255.255.255.0  broadcast 192.168.43.255
        inet6 fe80::4e92:349a:6f19:ff18  prefixlen 64  scopeid 0x20<link>
        inet 127.0.0.1  netmask 255.0.0.0

 

二、grep常用选项

2.1 长短选项的说明

OSIX.2:便于POSIX可移植性变成。

GNU扩展的:长选项

 

2.2 显示常用信息

--hlep 显示常用选项

-V 显示版本

--version

 

2.3 控制匹配模式的选项

-e PATTERN

明确指定使用此处的PATTERN作为待匹配的PATTERN,可以指定多个

 

-f FILE

从文件中获取模式列表

[tyson@localhost ~]$ ifconfig|grep -f findIp.txt 
        inet 192.168.43.49  netmask 255.255.255.0  broadcast 192.168.43.255
        inet6 fe80::4e92:349a:6f19:ff18  prefixlen 64  scopeid 0x20<link>
        inet 127.0.0.1  netmask 255.0.0.0
[tyson@localhost ~]$ cat findIp.txt 
[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}

需要注意的是,若-f所指定的文件是空文件,则表示任何行都无法匹配,与awk不指定PATTERN时的情况不一样。

 

-i

-y

--ignore-case

忽略PATTERN的大小写(包括命令行和文件两种形式所指定的PATTERN)

[tyson@localhost ~]$ cat quote2.txt 
line1
line2
line3
line4
line5
line6
line7
line8
line9
line10
line11
line12
line13
line14
[tyson@localhost ~]$ grep -i 'LINE5' quote2.txt 
line5
[tyson@localhost ~]$ grep 'LINE5' quote2.txt 

 

-v

--invert-match

翻转匹配结果,输出未匹配中的行

#输出不是ip地址的行
[tyson@localhost ~]$ ifconfig|grep -v -f findIp.txt 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:d2:ca:67  txqueuelen 1000  (Ethernet)
        RX packets 1956  bytes 165407 (161.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1333  bytes 156686 (153.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 68  bytes 5912 (5.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 68  bytes 5912 (5.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

-w

--word-regexp

仅选择能够精确整个单词的行:也就是单词的每一个字母必须精确匹配,不可多或少

  • 何为边界:除了单词所能包含的字符外,其他字符都是分隔符,例如:空格、换行符、括号、中括号、数学运算符等。
  • 何为单词:这里的单词仅由数字、字母、下划线组成。例如_word_:_不属于单词部分而是分隔符,word则是分隔符
#精确匹配单词
[tyson@localhost ~]$ echo -e 'abc\nabcc' |grep -w 'abc'
abc

 

-x

--line-regexp

仅选择能精确匹配整行内容的行。相当于在PTTERN中的匹配规则都变成这样了:^REGEXP$。

在下例中,第一行整行内容不是abc,所以无法匹配。而第二行的整行内容是abc,所以可以匹配。

[tyson@Tyson Lee learnGrep]$ echo -e "abcd\nabc"|grep -x "abc" 
abc
[tyson@Tyson Lee learnGrep]$ echo -e "abcd\nabc"|grep "abc"   
abcd
abc
[tyson@Tyson Lee learnGrep]$ echo -e "abcd\nabc"|grep "^abc$"
abc

 

2.4 控制输出内容的选项

-c

不再输出匹配的内容,输出匹配到的行的数量。

[tyson@Tyson Lee learnGrep]$ ifconfig |grep -f findIp.grep 
        inet 192.168.43.49  netmask 255.255.255.0  broadcast 192.168.43.255
        inet6 fe80::4e92:349a:6f19:ff18  prefixlen 64  scopeid 0x20<link>
        inet 192.168.43.179  netmask 255.255.255.0  broadcast 192.168.43.255
        inet 127.0.0.1  netmask 255.0.0.0
[tyson@Tyson Lee learnGrep]$ ifconfig |grep -c -f findIp.grep 
4

 

与-v选项结合还能输出没能成功匹配的行的数量。

[tyson@Tyson Lee learnGrep]$ ifconfig |grep -v -c -f findIp.grep  
23
[tyson@Tyson Lee learnGrep]$ ifconfig |grep -v -f findIp.grep    
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:d2:ca:67  txqueuelen 1000  (Ethernet)
        RX packets 3928  bytes 314820 (307.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2001  bytes 247643 (241.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::3eae:dcdd:5ed8:5736  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:d2:ca:71  txqueuelen 1000  (Ethernet)
        RX packets 1135  bytes 76281 (74.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 20  bytes 3882 (3.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

-L

不再输出匹配的内容,而是输出未能被匹配到的文件名。

在大批文件中搜索不包含某个字符串的文件。

[tyson@Tyson Lee learnGrep]$ grep -L "tyson" a.txt b.txt 
b.txt
[tyson@Tyson Lee learnGrep]$ cat a.txt 
tyson
[tyson@Tyson Lee learnGrep]$ cat b.txt 
nginx

 

-l

与-L恰好相反。不再输出匹配的内容,而是输出能被匹配到的文件名,当某文件中的某行被匹配到,将不再继续向下搜索该文件。

[tyson@Tyson Lee learnGrep]$ grep -L "tyson" a.txt b.txt 
a.txt
[tyson@Tyson Lee learnGrep]$ cat a.txt 
tyson
[tyson@Tyson Lee learnGrep]$ cat b.txt 
nginx

 

-m NUM

判断某个文件里面是否至少有NUM行匹配,并打印前NUM个匹配行。

[tyson@Tyson Lee learnGrep]$ grep -m 2 "line" a.txt b.txt c.txt  
a.txt:line1
a.txt:line2
b.txt:line1
b.txt:line2
c.txt:line1
c.txt:line2
[tyson@Tyson Lee learnGrep]$ cat a.txt 
line1
line2
line3
4
[tyson@Tyson Lee learnGrep]$ cat b.txt 
line1
line2
3
4
5
6
7
[tyson@Tyson Lee learnGrep]$ cat c.txt 
line1
line2
line3
line4
5
6

 

-o

只输出被匹配成功的字符串而不是整行。每个被匹配到的字符串都以单独的行输出。

[tyson@Tyson Lee learnGrep]$ ifconfig |grep -o -f findIp.grep 
192.168.43.49
255.255.255.0
192.168.43.255
4e92:349
192.168.43.179
255.255.255.0
192.168.43.255
127.0.0.1
255.0.0.0

 

-q

-s

--color

不怎么常用,可以参考help中的解释。

-s, --no-messages         suppress error messages
-q, --quiet, --silent     suppress all normal output
      --binary-files=TYPE   assume that binary files are TYPE;
                            TYPE is 'binary', 'text', or 'without-match'
--colour[=WHEN]       use markers to highlight the matching strings;
                            WHEN is 'always', 'never', or 'auto'

 

2.5 控制输出行前缀的选项

默认开启的-b -H

-b 打印从0开始的字节偏移

-H 指定了多个文件时,还需要输出匹配到的行所在的文件名。

 

-h

禁止输出文件名

 

-n

输出匹配内容在文件中的行号,每个文件都单独从1开始计数

[tyson@Tyson Lee learnGrep]$ grep -n "line" a.txt b.txt c.txt      
a.txt:1:line1
a.txt:2:line2
a.txt:3:line3
b.txt:1:line1
b.txt:2:line2
c.txt:1:line1
c.txt:2:line2
c.txt:3:line3
c.txt:4:line4

 

不常用:-T、-Z、-u、--label=LABEL

 --label=LABEL         use LABEL as the standard input file name prefix
 -Z, --null                print 0 byte after FILE name
 -u, --unix-byte-offsets   report offsets as if CRs were not there
                            (MSDOS/Windows)

 

2.6 控制输出行上下文的选项

grep不会多次输出同一行

 

-A NUM 输出匹配到的行与匹配到的后NUM行

--after

grep -A 5 '88' filename

 

-B NUM 输出匹配到的行与匹配到的后NUM行

--before

 

-C NUM 输出上下浮动NUM 行

--context

[tyson@Tyson Lee learnGrep]$ cat /etc/passwd|grep "nobody"
nobody:x:99:99:Nobody:/:/sbin/nologin
[tyson@Tyson Lee learnGrep]$ cat /etc/passwd|grep -A 5 "nobody"
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
[tyson@Tyson Lee learnGrep]$ cat /etc/passwd|grep -B 5 "nobody" 
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
[tyson@Tyson Lee learnGrep]$ cat /etc/passwd|grep -C 3 "nobody" 
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin

 

不常用--group-separato 、--no-group-separator

--group-separator=SEP use SEP as a group separator
--no-group-separator  use empty string as a group separator

 

2.7 文件和目录的选择选项

-r

--recursive

-R

--dereference-recursive

对指定的目录进行递归搜索

[tyson@Tyson Lee ~]$ grep -r "tyson" .
./learnShell/testRead.sh:r_username="tyson"
./learnShell/tyson.sh:/home/tyson/learnShell/1.sh
./learnShell/testTest.sh:if [[ $USER == tyson* ]]
./learnShell/testTest.sh:       echo "the user include str:tyson,welcome $USER."
./learnShell/testTest.sh:       echo "the user don't include str:tyson,welcome,other."
Binary file ./learnShell/.testBreak.sh.swp matches
./learnShell/testFun/function_02.sh:    tyson.com
./learnShell/testawk/big:tyson
./learnShell/testawk/big:tyson1
./learnShell/testawk/textChong.txt:tyson
./learnShell/testawk/textChong.txt:tyson1
./learnShell/testawk/textChong1.txt:tyson
./learnShell/testawk/textChong1.txt:tyson1
Binary file ./bzip2.tar matches
Binary file ./bin/bin.tar matches
./.viminfo:     tyson
./.viminfo:     [tyson@localhost ~]$ cat findIp.txt 
./.viminfo:> ~/learnShell/tyson.sh

 

--exclude-dir=DIR

筛选出不进行递归搜索的目录,使用DIR进行匹配

[tyson@Tyson Lee ~]$ grep -r --exclude-dir="learnShell" "tyson" .  
Binary file ./bzip2.tar matches
Binary file ./bin/bin.tar matches
./.viminfo:     tyson
./.viminfo:     [tyson@localhost ~]$ cat findIp.txt 
./.viminfo:> ~/learnShell/tyson.sh

 

不常用

--include=FILE_PATTERN

search only files that match FILE_PATTERN

 

三、退出状态码

通常情况下,如果能匹配到内容,则退出状态码为0,否则为1。但是如果发生了错误,则退出状态码为2。

若使用了-s -q退出状态码不可以作为shell脚本等匹配是否成功的依据

 

-q

--quiet

静默模式,即使遇到了错误也不输出任何内容到标准输出。尽量避免使用该选项,通过将标准错误输出到/dev/null的形式较好。

-s

--no-messages

禁止输出因未见不存在或文件没有度权限而产生的错误输出。尽量避免使用该选项,通过将标准错误输出到/dev/null的形式较好。

 

四、不同的搜索引擎(不同的grep程序)

-G 是默认的grep程序,支持基本正则表达式的引擎去解析PATTERN

-E 使用扩展正则表达式的引擎,在使用上:grep -E与egrep等同。

例如:

基本正则表达式:[0-9]\{1,3\}

扩展正则表达式:[0-9]{1,3}

 

-F 相当于使用fgrep,是不支持任何正则表达式的grep

P 使用perl正则比到时引擎。

 

五、sed、awk、grep三剑客默认所使用的正则表达式类型

sed:基本正则表达式

grep:基本正则表达式

awk:扩展正则表达

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

详解grep(一)grep基础、语法格式、常用选项与退出状态码的案例解析 的相关文章

  • kvm故障-虚拟机通过镜像创建虚后无法加载eth0网卡,显示网卡为ens3

    虚拟机通过镜像创建虚后无法加载eth0网卡 显示网卡为ens3 一 首先创建eth0网卡文件配置好 cd etc sysconfig network scripts TYPE Ethernet PROXY METHOD none BROWS
  • linux 中常用的压缩和解压缩命令详解(tar zip)

    文章目录 一 tar命令 1 压缩 2 解压 二 zip命令 1 压缩 2 解压 三 文件加密压缩和密码解压 1 tar命令 1 1 加密压缩 1 2 密码解压 2 zip命令 2 1 加密压缩 2 2 密码解压 在工作中 涉及到文件传输
  • Linux 引导过程概述

    引导过程 一 引导过程 引导过程总览 1 开机自检 2 MBR引导 3 GRUB菜单 4 加载Linux 内核 5 INIT 进程初始化 二 INIT 进程 1 INIT进程 2 inittab 配置文件 inittab文件中的字段 1 i
  • "通配符"和"正则表达式"的区别

    通配符是系统level的 而正则表达式需要相关工具的支持 egrep awk vi perl 在文本过滤工具里 都是用正则表达式 比如像awk sed等 是针对文件的内容的 通配符多用在文件名上 比如查找find ls cp 等等 1 通配
  • linux内核态和用户态(通俗易懂)

    一 内核态 用户态概念 内核态 也叫内核空间 是内核进程 线程所在的区域 主要负责运行系统 硬件交互 用户态 也叫用户空间 是用户进程 线程所在的区域 主要用于执行用户程序 二 内核态和用户态的区别 内核态 运行的代码不受任何限制 CPU可
  • 十二、Linux系统中的软件管理

    十二 Linux 系统中的软件管理 rpm dnf命令 软件仓库的搭建 12 1 Linux中软件包的类型 1 DEB UBlinux DEBlinux 2 RPM redhat centOS fadora 3 bz2 gz xz 1 需要
  • Linux学习笔记:用fdisk工具分区,swap分区的管理

    1 什么是MBR 什么是分割表 MBR master boot record 即硬盘的主引导记录 分割表 partition table 即硬盘的分区表 在系统关机时 硬盘内的磁盘上的磁头会回到整个磁盘的第一个扇区 当再次启动系统时 磁头会
  • Linux 下使用命令行查看PDF

    使用 evince命令查看 evince frames pdf
  • (详细图解)通过VMware安装centOS系统并进行开机配置(小白版)

    一 VMware的版本及选择 VMware ESX Server ESX本身为一操作系统 不需要宿主操作系统 它本身就是一个操作系统 用来管理硬件资源 所有的系统都安装在它的上面 带有远程web管理和客户端管理功能 VMware GSX S
  • NFS详细介绍

    NFS介绍 网络文件系统 network files system 简称NFS是一种基于TCP传输协议的文件共享习通 NFS的CS体系中的服务端启用协议将文件共享到网络上 然后允许本地NFS客户端通过网络挂载服务端共享的文件 应用场景 为w
  • Linux文件管理

    成功不易 加倍努力 1 文件系统目录结构 1 1文件系统的目录结构 1 2 常见的文件系统目录功能 1 3 应用程序的组成部分 1 4 Linux下的文件类型 2 文件操作命令 2 1 显示当前工作目录 2 2 绝对和相对路径 2 3 更改
  • linux图形界面切换到字符界面

    redhat linux图形界面切换到字符界面 1 X Window图形界面和字符界面自由切换 一 图形界面切换到字符界面 在X Window图形操作界面中按 Alt Ctrl Fn n 1 6 就可以进入Console字符操作界面 这就意
  • Linux里隐藏的计算器,你知道它的奥秘吗?

    大家都知道 windows下有个计算器工具 我们在工作生活中经常使用到它 但是 你可知Linux下也同样有个计算器吗 当然 良许说的是命令行下的计算器工具 而不是界面型的计算器 良许是Linux应用开发工程师 平时基本是在命令行下工作 所以
  • PostgreSQL服务启动时报错:“FATAL: could not create lock file "/tmp/.s.PGSQL.5432.lock": Permission denied”

    PostgreSQL服务启动时报错 FATAL could not create lock file tmp s PGSQL 5432 lock 权限不够 PostgreSQL服务启动时报错 FATAL could not open loc
  • Linux下more命令高级用法

    我们在 Linux 环境下工作时 每天肯定会跟各种各样的文本文件打交道 这些文件 有时候会非常长 无法在一屏的空间内显示完全 所以 在查看这种文件时 我们需要分页显示 这时 我们就可以使用 more 命令 more 命令基本用法 more
  • linux中的shebang

    1 读作shebang或者sha bang 2 通常在unix系统的脚本的第一行开头使用 3 指明执行这个脚本文件的解释程序 4 步骤 使用which查询python3的解释器所在的路径 which python3 修改要运行的主pytho
  • 五、Linux系统中的用户管理

    五 Linux系统中的用户管理 5 1 用户及用户组存在的意义 5 1 1 用户存在的意义 系统资源是有限的 如何合理分配系统资源 在这个问题解决时必须要有连个资源配合 1 身份 account 2 授权author 3 认证auth 3A
  • Linux 系统 /var/log/journal/ 垃圾日志清理

    CentOS系统中有两个日志服务 分别是传统的 rsyslog 和 systemd journal systemd journald是一个改进型日志管理服务 可以收集来自内核 系统早期启动阶段的日志 系统守护进程在启动和运行中的标准输出和错
  • Linux修改hostname的几种方式,及遇到的问题

    之前修改主机名全都是采用的network方式 今天遇到点问题 发现hostname并非之前理解的那样 自己配置hostname的问题 这与系统的版本有关系么 腾讯云7 5的 百度云的是6 5 我自己在VMware上安装的6 5就没 etc
  • Linux基础之SQLite数据库

    嵌入式数据库篇 一 SQLite数据库 二 SQLite数据库安装 三 SQLite的命令用法 四 打开 创建数据库的C接口 五 C代码执行sql语句 六 C代码建表和插入数据 七 总结 一 SQLite数据库 1 简介 轻量化 易用的嵌入

随机推荐

  • IDA使用之旅(一)用IDA查看最简单的sys文件

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家拍砖 本系列内容是我根据 知其所以然论坛 博主录制的学习视频 做的笔记 使用的IDA软件版本 IDA pro 5 5 参考下载地址 http w
  • 使用Maven插件整合protocol buffer

    本来自己在网上找如何使protocol buffer在IDE 我用的是IDEA 上使用的 结果搜索出来的都不尽人意 因为都太粗略了 没有重点的去阐述 所以最后还是决定自己搜索相关的Maven插件 再慢慢地摸索 费了我好多的时间啊 本人小白
  • gojs 流程图框架-节点装饰器模板(二)

    上一章我们了解了如何使用 gojs 完成基本的节点和连接线的绘制 gojs 中还可以对节点或边进行自由拖动 编辑等功能 本章将基于上一章编写的流程图代码 为这些节点设置装饰器模板 完成后的效果图 建议下载源码 对照本文进行学习 源码地址 g
  • 【11月比赛合集】13场可报名的创新应用、数据分析和程序设计大奖赛,任君挑选!

    CompHub 实时聚合多平台的数据类 Kaggle 天池 和OJ类 Leetcode 牛客 比赛 本账号同时会推送最新的比赛消息 欢迎关注 更多比赛信息见 CompHub主页 或 点击文末阅读原文 以下信息仅供参考 以比赛官网为准 目录
  • 性能优化:虚拟列表,如何渲染10万条数据的dom,页面同时不卡顿

    最近做的一个需求 当列表大概有2万条数据 又不让做成分页 如果页面直接渲染2万条数据 在一些低配电脑上可能会照成页面卡死 基于这个需求 我们来手写一个虚拟列表 思路 列表中固定只显示少量的数据 比如60条 在列表滚动的时候不断的去插入删除d
  • GMP初探

    G Goroutine 协程 用户级的轻量级线程 M 对内核线程的封装 P 为G和M的调度对象 主要用途是用来执行goroutine 维护了一个goroutine队列 即runqueue 由来 单进程时代 这个时代不需要调度器 早起的操作系
  • PMS-adb install安装应用流程(Android L)

    第一次画流程图画的不好 通过adb install安装应用时对framework来说会首先调用Pm java的runInstall 方法 private int runInstall int installFlags 0 int userI
  • mesa调试技巧

    技术关键字 mesa log系统 环境变量 目录 前言 一 gdb或vscode的断点调试 二 mesa log 系统的使用 总结 前言 软件调试技术是要求软件开发人员必备的一项技能 不同的问题具有不同的调试手段和方法 本文从mesa库的实
  • xcode报错:Cycle inside *******

    xcode报错 Cycle inside building could produce unreliable results This usually can be resolved by moving the target s Heade
  • 基于pytorch实现的Auto-encoder模型

    最近因为在自己论文当中可能要用到Auto encoder 这个东西 学了点皮毛之后想着先按照别人的解释实现一下 然后在MNIST数据集上跑了下测试看看效果 话不多说直接贴代码 Author Media 2020 10 23 import t
  • ci/cd 流程图_如何在整个CI / CD工作流程中衡量软件的可靠性

    ci cd 流程图 克服具有持续可靠性的CI CD工作流程中保持代码质量的挑战 CI CD的做法鼓励在开发中频繁进行代码集成 加快新版本的准备工作并自动化部署 借助这种新工具 软件开发生命周期的这些部分都得到了改善和加速 同时 我们用于评估
  • Spring MVC(Boot) Servlet 3.0异步处理,DeferredResult和Callable(续篇)

    目录 背景 意外发现 结论 背景 上篇Spring MVC Boot Servlet 3 0异步处理 DeferredResult和Callable 我把WebMvcConfig 代码 继承WebMvcConfigurationSuppor
  • 搜索引擎和知识图谱那些事 (上).基础篇

    这是一篇基础性文章 主要介绍搜索引擎和知识图谱的一些原理 发展经历和应用等知识 希望文章对你有所帮助 如果有错误或不足之处 还请海涵 参考资料见后 一 搜索引擎 一 搜索引擎的四个时代 根据张俊林大神的 这就是搜索引擎 这本书中描述 推荐大
  • C++ stl容器

    1 std string string constructor include
  • 有哪些通俗易懂的例子可以解释 IaaS、PaaS、SaaS 的区别?

    首先 什么 云 很多年前 我们家住一小平房 喝水就喝院子里的井水 冬天取暖自己烧煤炉 后来经济状况好了 搬进了楼房 喝水喝上了集中供应的自来水 冬季用上了集中供应的暖气 再也不用打水和掏黑煤球 这就是 云 的基本概念 过去企业数据维护需要恒
  • 声纹识别中pooling总结

    1 Statistics Pooling http danielpovey com files 2017 interspeech embeddings pdf The statistics pooling layer calculates
  • Python手册(Standard Library)--math+random

    文章目录 math random math math import math math truck x 取整 math ceil x 天花板 math floor x 地板 math exp x math log x b math e 计算
  • 机器学习与数学基础知识(一)

    最近 朋友分享给我一套 七月在线 的机器学习视频 我几经思量之后 决定从视频量最少的数学基础部分开始看起 今天学习完了第一个视频 长达2小时 感觉老师讲的挺不错的 以前自己就对机器学习很感兴趣 做了一些了解和尝试性地学习 也看了一点经典的林
  • 专升本数学——极限与连续(二)笔记

    一 无穷大量与无穷小量 1 定义 无穷小量 如果 lim f x 0 则称 f x 是此极限条件下的无穷小量 本质 以 0 为极限的函数 x 2 是 x gt 0 时的无穷小量 无穷大量 如果 lim f x 无穷 则称 f x 是此极限条
  • 详解grep(一)grep基础、语法格式、常用选项与退出状态码的案例解析

    目录 一 GREP基础 1 1 grep的全称 1 2 grep语法格式 二 grep常用选项 2 1 长短选项的说明 2 2 显示常用信息 2 3 控制匹配模式的选项 2 4 控制输出内容的选项 2 5 控制输出行前缀的选项 2 6 控制