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,如需转载请自行联系原作者




相关文章
|
2天前
|
网络协议 Shell Linux
LabVIEW 在NI Linux实时设备上访问Shell
LabVIEW 在NI Linux实时设备上访问Shell
|
3天前
|
Shell Linux
【Linux】进程实践项目(更新中) — 自主shell编写
前几篇文章,我们学习进程的相关知识:进程概念,进程替换,进程控制。熟悉了进程到底是个什么事情,接下来我们来做一个实践,来运用我们所学的相关知识。这个项目就是手搓一个shell模块,模拟实现Xshell中的命令行输入。
10 1
|
3天前
|
监控 关系型数据库 Shell
Shell脚本入门:从基础到实践,轻松掌握Shell编程
Shell脚本入门:从基础到实践,轻松掌握Shell编程
|
4天前
|
Shell Linux 信息无障碍
5 个有用的 Linux Shell 转义序列
5 个有用的 Linux Shell 转义序列
|
4天前
|
存储 算法 网络协议
【探索Linux】P.26(网络编程套接字基本概念—— socket编程接口 | socket编程接口相关函数详细介绍 )
【探索Linux】P.26(网络编程套接字基本概念—— socket编程接口 | socket编程接口相关函数详细介绍 )
12 0
|
5天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
23 5
|
6天前
|
存储 Shell C语言
shell脚本 编程 变量 基本入门(详解)
shell脚本 编程 变量 基本入门(详解)
|
3月前
|
Ubuntu Linux Shell
【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战
【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战
71 0
|
4月前
|
Shell Linux C++
Linux C/C++ 开发(学习笔记二):Shell脚本编程案例
Linux C/C++ 开发(学习笔记二):Shell脚本编程案例
44 0
|
5月前
|
运维 Shell Linux
Linux 之大数据定制篇-Shell 编程
Linux 之大数据定制篇-Shell 编程
124 0