Linux--sed 工具的使用

一、sed的基本用法

    非交互,基于模式匹配过滤及修改文本
    逐行处理,并将结果输出到屏幕
    可实现对文本的输出、删除、替换、复制、剪切、导入、导出等各种操作

sed文本处理工具的用法:

用法:sed     [选项]    '编辑指令'     文件

常用选项:

-e<script> 或 --expression=<script> 以选项中指定的script来处理输入的文本文件
-f<script文件> 或 --file=<script文件> 以选项中指定的script文件来处理输入的文本文件
-h 或 --help 显示帮助
-n 或 --quiet或--silent 仅显示处理后的结果       //常用
-V 或 --version 显示版本信息
-i 直接修改文件内容                                //先测试,再使用
-r 启用扩展的正则表达式,应作为首个选项
{} 可组合多个命令,以;分隔

常用编辑命令

a :新增          a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
c :取代          c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
d :删除行        所以 d 后面通常不接任何东西
i :插入          i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
p :增加行        亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
s :取代          可以直接取代字符串
   s/lll/zzz/       将每行的第1个lll替换为zzz
   s/lll/zzz/3      将每行的第3个lll替换为zzz
   s/lll/zzz/g      将所有的lll都替换为zzz
    替换操作的分隔" / " 可改用其他字符   ! @ # $ % ^ & *  便于修改文件路径
 ,  3到5
;  3和8
!   取反操作


[root@test opt]# cat test01.txt

1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1
a b c d e f
A B C D E F


1、sed 命令  -n 选项  p 输出操作

[root@test opt]# sed -n '1p' test01.txt                 // 打印第一行,'1p'打印第一行,但是需要加上-n才能正确输出第一行-

1 2 3 4 5 6 7 8 9                                                    // -n   选项相当于过滤一样,如果不加 -n 就会打印文件全部内容


2)  p 输出操作的一些细节

[root@test opt]# sed -n 'p' test01.txt             //  输出所有行,相当于  cat  test01.txt
1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1
a b c d e f

A B C D E F                                                                                                                                                                   

[root@test opt]# sed -n '4p' test01.txt         //  输出第 4 行

A B C D E F

[root@test opt]# sed -n '2,4p' test01.txt         //输出2~4行信息
9 8 7 6 5 4 3 2 1
a b c d e f

A B C D E F

[root@test opt]# sed -n '1p;3p' test01.txt         //输出第1行和第3行
1 2 3 4 5 6 7 8 9
a b c d e f
[root@test opt]# sed -n '2,+1p' test01.txt         //输出第2行及之后的1行
9 8 7 6 5 4 3 2 1
a b c d e f
[root@test opt]# sed -n '/1$/p' test01.txt            //输出以1为结尾的行
9 8 7 6 5 4 3 2 1
[root@test opt]# sed -n '/^1/p' test01.txt            /输出以1为开头的行
1 2 3 4 5 6 7 8 9
[root@test opt]# sed -n 'p;n' test01.txt            //输出奇数行
1 2 3 4 5 6 7 8 9
a b c d e f
[root@test opt]# sed -n 'n;p' test01.txt            //输出偶数行
9 8 7 6 5 4 3 2 1

A B C D E F

[root@test opt]# sed -n '2,$p' test01.txt        //输出第二行直到最后一行
9 8 7 6 5 4 3 2 1
a b c d e f
A B C D E F
[root@test opt]# sed -n '$=' test01.txt         //输出文本总行数
4


2、sed  命令   -i 选项    d 删除操作

1)  正常情况下,sed命令所做的处理只是把操作结果(包括打印、删除等)输出到当前终端屏幕,而并不会对原始文件做任何更改

[root@test opt]# sed '1d' test01.txt         //屏幕打印的文本已经没显示第一行,但是没加 -i选项这只是展现的结果。

9 8 7 6 5 4 3 2 1
a b c d e f
A B C D E F
[root@test opt]# cat test01.txt
1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1
a b c d e f
A B C D E F

[root@test opt]# sed -i '1d' test01.txt        //这时你会发现屏幕没有输出,其实第一行已经删除了

[root@test opt]# cat test01.txt
9 8 7 6 5 4 3 2 1
a b c d e f
A B C D E F

2)d 删除的一些需要掌握的技巧

sed     '3,5d'     test01.txt                  删除第3~5行
sed     '/xml/d'    test01.txt                删除所有包含xml的行
sed     '/xml/!d'    test01.txt               删除不包含xml的行,!符号表示取反
sed     '/^install/d'    test01.txt           删除以install开头的行
sed     '$d'    test01.txt                    删除文件的最后一行
sed     '/^$/d'    test01.txt                 删除所有空行



3、简单说下 s 选项替换文本

sed     's/xml/XML/'     test01.txt            将每行第一个xml替换为XML
sed     's/xml/XML/3'     test01.txt           将每行中的第3隔xml替换为XML
sed     's/xml/XML/g'     test01.txt           将所有的xml都替换为XML
sed     's/xml//g'     test01.txt              将所有的xml都删除(替换为空串)
sed     's/doc/&s/g'    test01.txt            将所有的doc都替换为docs,&代表查找串
sed     '4,7s/^/#/'     test01.txt             将第4~7行注释掉(行首加#号)
sed     's/^#an/an/'     test01.txt            解除以#an开头的行的注释(去除行首的#号)







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像识别技术在病虫害检测中的应用是一个快速发展的领域,它结合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮度、对比度、去噪、裁剪、缩放等。 3. **特征提取**:从图像中提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程中,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统中,可以是移动应用、网页服务或集成到智能农业设备中。 7. **实时监测**:在实际应用中,系统可以实时接收植物图像,并快速给出病虫害的检测结果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测结果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测中的应用将越来越广泛。
软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测试面试题软件测
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值