Linux程序编程————学习笔记(7)

两个常用的命令和正则表达式
find命令
find 命令是用来搜索文件的命令。初学者会觉得很复杂,因为它有选项,测试和动作类型的参数。还会因为一个参数的处理结果可能会影响到后续参数的处理。首先用root权限来执行这个命令
#find / -name test -printf
/usr/bin/test
#
解释:从根目录开始找到所以名称为test的文件,并且输出文件的完整路径。
这样全部搜索可能会浪费很长时间,所以我们要知道任何不要搜索其他文件系统目录。-mount选项,可以告诉find命令不要搜索挂载其他文件系统的目录
#find / -mount -name test -printf
/usr/bin/test
#
find命令的完整语法:find [path] [optrions] [tests] [actions]
path部分是使用路径,我们可以使用绝对路径,如/bin,或相对路径,如.。也可以指定多个路径,如find /var /home
options有很多选项,下列是一些主要选项
选项            含义
-depth            在查看目录本身之前先搜索目录内容
-follow            跟随符号链接
-maxdepths N        最多搜索N层
-mount(或-xdev)        不搜索其他文件系统的目录

测试            含义
-atime N        文件在N天之前被最后访问过
-mtime N        文件在N天之前被最后修改过
-name pattern        文件名匹配提供的模式pattern,为确保pattern被传递给find命令而不是shell处理,pattern必须总是用引号括起
-type c            文件类型为c,c是一个特殊类型。最常见的是d(目录)和f(普通文件)
-user username        文件的拥有者是指定的用户username
 
操作符,短格式        操作符,长格式            含义
!            -nor                测试取反
-a            -and                两个测试都必须为真
-o            -or                两个测试有一个必须为真

$find . -newer while2 -print
查找当前目录中比while2新的文件
$find . -newer while2 -type f -print
查找当前目录中比while2新的普通文件
$find . \(-name "_*" -or -newer while2 \) -type f -print
查找当前目录中比while2新而且文件名以_开头的普通文件

动作            含义
-exec command        执行一条指令,最常见的动作之一,这个动作必须用\;来结束
-ok command        与-exec类似,但是他在执行命令之前会针对每个要处理的文件,提示用户进行确定,这个动作必须用\;来结束
-print            打印文件名
-ls            对当前文件使用命令ls-dils

$find . -newer while2 -type f -exec ls -l {} \;

grep命令
这个名字代表的就是通用正则表达式解析器。前面我们使用find命令在系统搜索文件,而使用grep命令在文件中搜索字符串。显然,最平常的使用就是我们在使用find命令时,将grep作为传递-exec的一条命令
grep语法是一个选项,要匹配的模式和要搜索的文件
grep [options] PATTERN    [FILES]
如果没有提供文件名,则grep命令将搜索标准输入。
选项        含义
-c        输出匹配行的数目,而不是输出匹配的行
-E        启用扩展表达式
-h        取消每个输出行的普通前缀,即匹配查询模式的文件名
-i        忽略大小写
-l        只列出包含匹配行的文件名,而不输出真正的匹配行
-v        对匹配模式取反,即搜索不匹配行,而不是匹配行

例:
$grep in words.txt
在文件words.txt中搜索字符串in,输出匹配行
$grep -c in words.txt words2.txt
在两个文件中计算匹配行数目,文件名输出
$grep -c -v in words.txt words2.txt
使用-v选项对搜索取反,计算不匹配行的数目

正则表达式
grep命令
字符             含义
^            指向一行的开头
$            指向一行的结尾
.            任意单个字符
[]            方括号内包含一个字符范围,其中任意一个字符都可以被匹配,例如字符范围a-e,或在字符范围加上^符号表示使用            反向字符的范围,即不匹配的字符

如果将上述字符当作普通字符,需要在前面加一个\字符。    

方括号内有一些特殊匹配机制
匹配模式            含义
[:alnum:]        字母与数字字符
[:alpha:]        字母
[:ascii:]        ASCII字符
[:blank:]        空格和制表符
[:cntrl:]        ASCII控制字符
[:digit:]        数字
[:graph:]        非控制、非空格字符
[:lower:]        小写字母
[:print:]        可打印字符
[:punct:]        标点符号字符
[:space:]        空白字符,包括垂直制表符
[:upper:]        大写字母
[:xdigit:]        十六进制数字

选项            含义
?            匹配是可选的,最多匹配一次
*            必须匹配0或多次
+            必须匹配1或者多次
{n}            必须匹配n次
{n,}            必须匹配n次或以上
{n,m}            匹配次数在n到m之间,包括n和m    

$ grep e$ words2.txt
查找以字母e结尾的行
$ grep a[[:blank:]] words2.txt
查找以字母a结尾的单词,使用[[:blank:]],它用来测试空格和制表符
$ grep Th.[[:space:]] words2.txt
查找以Th开头的由三个字母组成的单词,即要使用[[:blank:]]来划定结尾,用(.)来匹配额外的一个字符
$ grep -E [a-z]\{10\} words2.txt
最后,用扩展grep模式来搜索只有10个字符长的全部由小写字母组成的单词。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值