linux----->shell高级编程----sed应用

简介:

  背景

    sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作.

sed意为流编辑器(StreamEditor),在Shell脚本和Makefile中作为过滤器使用非常普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出。sed和vi都源于早期UNIX的ed工具,所以很多sed命令和vi的末行命令是相同的。


sed命令行格式为: 

    sed option 'script' file1 file2 ...

    sed option -f scriptfile file1 file2 ...


常用参数:

--version

显示sed版本

--help

显示帮助文档

-n 
取消默认输出
-e 指定多个指令执行
-i
修改文件内容(默认不修改原文件内容)
-r
使用扩张正则表达式

输出占位符

a(append)

追加

i(insert)
插入
d(delete)
删除
s(substitution)

替换

p(print)
打印


主要的介绍了这么多,下面开始实践(实践中出真理)

    1. 显示第二行

    原始数据

    wKiom1d6bh3gf_QxAAAQaqiayLw561.png


1
#20#sea@~ 22:06:04]$sed '2p' test.txt

    wKioL1d6bqeS_V5CAAATuPYlM6s384.png

    此时我们发现 [bbbbb.....bbb] 多输出一行,证明2p打印了第二行, 此时我们发现原始数据也打印了,不符合题意.

 

   wKioL1d6b96B9d9fAAAMjn8ZR2A706.png

   此时加上 [ -n ]参数, 精确只打印第二行



     2. 使用 -e 多条语句 输出指定行的数据

        原始数据

        wKiom1d6cTvhIheiAAARIIHYiqY629.png

    

1
#23#sea@~ 22:06:04]$ sed -n -e '2p' -e '4p' test.txt

    wKiom1d6ccTze_BgAAAPLotKpjE670.png



   3. 输假设一个文本(test.txt)中有1-100行数据,要求打印出20-30行数据

    首先我们利用循环机制模拟出100行数据

1
#24#sea@~ 22:06:04]$ for i in `seq 100`; do echo $i >> test.txt ; done

      利用wc -l 查看文件行数

1
[ #25#sea@~ 22:32:29]$wc -l test.txt

    wKiom1d6c8HijVZ3AAAPF_V-1ek560.png


    题目实现如下

    wKioL1d6dEPStLVGAAAfWCssaMU001.png



注:sed 的功能不止如此,因时间和生产环境有限,更详细的sed介绍文章将后续发布, 敬请关注.





      本文转自asd1123509133 51CTO博客,原文链接:http://blog.51cto.com/lisea/1795754,如需转载请自行联系原作者




相关文章
|
5天前
|
Shell Linux
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
60 32
|
3月前
|
存储 Shell Linux
Linux 如何更改默认 Shell
Linux 如何更改默认 Shell
87 0
Linux 如何更改默认 Shell
|
3月前
|
XML JSON 监控
Shell脚本要点和难点以及具体应用和优缺点介绍
Shell脚本在系统管理和自动化任务中扮演着重要角色。尽管存在调试困难、可读性差等问题,但其简洁高效、易于学习和强大的功能使其在许多场景中不可或缺。通过掌握Shell脚本的基本语法、常用命令和函数,并了解其优缺点,开发者可以编写出高效的脚本来完成各种任务,提高工作效率。希望本文能为您在Shell脚本编写和应用中提供有价值的参考和指导。
127 1
|
3月前
|
缓存 Linux 开发者
Linux内核中的并发控制机制:深入理解与应用####
【10月更文挑战第21天】 本文旨在为读者提供一个全面的指南,探讨Linux操作系统中用于实现多线程和进程间同步的关键技术——并发控制机制。通过剖析互斥锁、自旋锁、读写锁等核心概念及其在实际场景中的应用,本文将帮助开发者更好地理解和运用这些工具来构建高效且稳定的应用程序。 ####
63 5
|
3月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
3月前
|
存储 安全 关系型数据库
Linux系统在服务器领域的应用与优势###
本文深入探讨了Linux操作系统在服务器领域的广泛应用及其显著优势。通过分析其开源性、安全性、稳定性和高效性,揭示了为何Linux成为众多企业和开发者的首选服务器操作系统。文章还列举了Linux在服务器管理、性能优化和社区支持等方面的具体优势,为读者提供了全面而深入的理解。 ###
|
4月前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
107 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
4月前
|
存储 Shell Linux
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
64 0
|
8天前
|
Linux
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
50 23
Linux系统之whereis命令的基本使用