《Linux操作系统编程》第九章 数据查找和筛选工具 : 了解流编辑器sed和报表生成器awk的简单使用

这篇具有很好参考价值的文章主要介绍了《Linux操作系统编程》第九章 数据查找和筛选工具 : 了解流编辑器sed和报表生成器awk的简单使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

《Linux操作系统编程》第九章 数据查找和筛选工具 : 了解流编辑器sed和报表生成器awk的简单使用,Linux,linux,编辑器,java

《Linux操作系统编程》第九章 数据查找和筛选工具 : 了解流编辑器sed和报表生成器awk的简单使用,Linux,linux,编辑器,java

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁
🦄 个人主页——libin9iOak的博客🎐
🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺
🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐
🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥

《Linux操作系统编程》第九章 数据查找和筛选工具 : 了解流编辑器sed和报表生成器awk的简单使用,Linux,linux,编辑器,java

第九章 数据查找和筛选工具

学习目的

​ 让学生了解流编辑器sed和报表生成器awk的简单使用。

学习要求

了解:流编辑器sed和报表生成器awk的简单使用。

**理解:**awk中的重定向

学习方法

​ 本章主要讲述数据查找和筛选工具,需要学生上机实践,培养数据查找和筛选能力。

概念和原理

9.1 流编辑器sed

(1) 流编辑器

▪ 定义

流编辑器是一种流水线型的、非交互式的文本编辑器。它使用户可以在命令行上(而不是编辑器中)对文件进行无破坏性编辑。

▪ 工作流程

  1. sed 工作时,首先读取被编辑文件中的第一行文本,将其放入一个模式空间的临时缓冲区中。
  2. 再读取编辑命令,根据命令中指定的模式和行号来查找和编辑文本。
  3. 编辑完成后将结果输出到标准输出(缺省为荧光屏上)并读取下一行文本。
  4. 重复这个过程直到文本结束。

▪ 屏幕编辑器与流编辑器的区别

项目 vi sed
1.用户操作方式 2.文本处理模式 3.编辑命令地点 4.编辑空间 5.对原文本影响 6.批量发出命令 7.基本编辑单位 8.主要应用场合 9.可编文件大小 交互式 全局并行(可逆行) 编辑器中 临时文件(文件缓存) 破坏性的 不能 字符 人工编辑 较小 非交互式 逐行串行(不可逆行) 命令行上 模式空间(行缓存) 非破坏性的 可以 行 程序自动编辑 较大

(2) sed命令的基本格式

▪ sed ‘command’ file

▪ sed -n ‘command’ file

▪ sed -e ‘command1’ -e ‘command2’ file

▪ sed -f cmd_file file

任选项说明:

command: 普通行编命令

-n: 只显示与模式匹配的行(缺省都显示)

-e: 在同一命令行上进行多次编辑

-f: 编辑命令放在随后的命令表文件中

file: 被编辑的文本文件

(3) sed中常用的行编辑命令格式

  1. [行定位符][编辑命令元字符]

例如: sed ‘1,9d’ abc

​ sed -n ‘196p’ abc

  1. /正则表达式/[编辑命令元字符]

例如: sed -n ‘/student/p’ filename

​ sed ‘/xyz/d’ filename

  1. [定位符][元字符]/正则表达式/[元字符]

    例如: sed –n ‘3,8s/east/west/’ filename

​ sed –n ‘1,$s/computer/network/g’ filename

(4) sed中常见的出错信息和退出状态

  1. 操作系统命令出错:

​ sed -r ‘s/this/that/’ myfile

显示: sed: ERROR: Illegal option – r

退出状态值: 1

  1. 正则表达式出错和模式不匹配:

​ sed -n ‘s/this/that’ newfile

显示: sed: ERROR: Command garbled:

​ s/this/that

退出状态值: 0

  1. 出错信息保存和退出状态值检测

保存出错信息:

​ sed –n ‘1,$s/abc/xyz/’ file 2> err_log

或: sed –n ‘1,$s/abc/xyz/’ file 2>> err_log

(5) sed应用实例

  1. 打印文件内容: p命令

    sed -n ‘22, 35p’ file1

​ 打印file1的第22~35行

sed -n ‘/string/p’ file2

​ 打印file2中包含string的行

sed -n ‘9, /^uestc/p’ file3

​ 打印file3中第9行到以uestc开头的行

sed -n ‘/[Cc]hina/p’ file4

​ 打印file4中包含China或china的行

  1. 删除文件内容: d命令

    sed ‘76d’ file5

​ 删除file5中的第76行

sed ‘9,$d’ file6

​ 删除file6中第8行以后的所有行

sed ‘/co*ool/d’ file7

​ 删除file7中包含cool, coool, cooool, ……等等的行

  1. 替换文件内容: s命令

    sed -n ‘s/beijing/shanghai/g’ table1

​ 将table1中所有的beijing替换为shanghai

sed -n ‘s/^ *uid/username/p’ ulist

​ 将ulist中以零至多个空格开头后跟uid的字符串替换为username

  1. 多次编辑: e命令

    sed -e ‘1,5d’ -e ‘s/good/bad/’ report

    将report中的第1~5行删除, 同时将good替换为bad

  2. 添加行: a命令

​ sed ‘/^operation/a\this is an inserted line’ file1

在文件file1中的以operation开头的行后加入this is an inserted line一行。

9.2 数据处理器awk

(1) 编辑工具awk

▪ 定义:

awk 是一种程序设计语言, 主要用来处理文本类数据并产生报表。

它执行时对输入数据(文件、标准输入或命令的输出)逐行进行扫描,匹配指定的模式,并执行指定的操作。

(2) awk的基本格式

awk ‘pattern {action}’ filename

awk扫描filename中的每一行, 对符合模式pattern的行执行操作action

(3) 数据文件中记录和域的标识

​ $1 $2 $3 $4 $5

NR=1 Tom Jones 4424 5/12/66 543354 NF=5

NR=2 Mary Adams 5436 11/4/63 28765 NF=5

NR=3 Sally Chang 1654 7/22/54 650000 NF=5

NR=4 Billy Black 1683 9/23/44 336500 NF=5

(4) 应用实例

$cat employees

Tom Jones 4424 5/12/66 543354

Mary Adams 5436 11/4/63 28765

Sally Chang 1654 7/22/54 650000

Billy Black 1683 9/23/44 336500

$awk ‘/Mary/’ employees

Mary Adams 5436 11/4/63 28765

$awk ‘{print $1}’ employees

Tom

Mary

Sally

Billy

$awk ‘/Sally/ {print $1, $2}’ employees

Sally Chang

9.3 awk的重定向

(1) awk的输入重定向形式

  1. 从其它命令输入

格式: command | awk ‘pattern’

​ command | awk ‘{action}’

​ command | awk ‘pattern {action}’

  1. 从标准输入设备(键盘)输入

格式: awk ‘pattern {action}’

由于未指定输入数据来源, 缺省情况下从标准输入设备(键盘)读取数据. 键盘上每输入一行, awk就处理一行, 直到遇到^D为止.

(2) awk的格式化输出

  1. print 函数

​ 用于不需要复杂格式的简单输出。

  1. printf 函数

​ 高级格式化输出函数. 用法与C语言中的用法相同。

(3) awk命令文件

格式:

awk -f awk_file data_file

▪ 当需要对输入数据中的一行执行多项操作时, 常把这些操作命令放在一个命令文件awk_file中, 而不是在命令行上发出.

▪ awk运行时, 对输入文件中的每一行执行命令文件中的所有操作后, 再对下一行数据进行同样的处理过程, 以此类推, 直到输入文件中的最后一行。

重点

流编辑器sed和报表生成器awk的简单使用。

难点

​ 流编辑器sed和报表生成器awk的使用。

习题

1.屏幕编辑器和流编辑器的区别。

2.命令 sed -n ‘22, 35p’ file1 代表什么意思?

答:打印file1的第22~35行。

3.命令 sed -n ‘s/beijing/shanghai/g’ table1 代表什么意思?

答:将table1中所有的beijing替换为shanghai。

4.假如 employees的内容为:

Tom Jones 4424 5/12/66 543354

Mary Adams 5436 11/4/63 28765

Sally Chang 1654 7/22/54 650000

Billy Black 1683 9/23/44 336500

那么命令 $ awk ‘/Sally/ {print $1, $2}’ employees得到的结果是什么?

答:Sally Chang。

原创声明

=======

作者: [ libin9iOak ]


本文为原创文章,版权归作者所有。未经许可,禁止转载、复制或引用。

作者保证信息真实可靠,但不对准确性和完整性承担责任。

未经许可,禁止商业用途。

如有疑问或建议,请联系作者。

感谢您的支持与尊重。

点击下方名片,加入IT技术核心学习团队。一起探索科技的未来,共同成长。文章来源地址https://www.toymoban.com/news/detail-519228.html

到了这里,关于《Linux操作系统编程》第九章 数据查找和筛选工具 : 了解流编辑器sed和报表生成器awk的简单使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux下的系统编程——基础操作(一)

    前言: linux系统编程是基于Linux系统进行程序开发的一个过程,主要涉及到的是linux系统中的函数使用如下图所示: 最外层的是咱们的应用程序,这部分程序大多调用的是咱们标准库,或者说是C库,这部分库函数能满足大部分的应用程序的开发,但是这部分库函数访问硬件的

    2024年02月11日
    浏览(29)
  • 【Linux操作系统】举例解释Linux系统编程中文件io常用的函数

    在Linux系统编程中,文件IO操作是非常常见和重要的操作之一。通过文件IO操作,我们可以打开、读取、写入和关闭文件,对文件进行定位、复制、删除和重命名等操作。本篇博客将介绍一些常用的文件IO操作函数。 1.1 原型、参数及返回值说明 1.1.1 原型: open()函数是Linux系统

    2024年02月12日
    浏览(34)
  • 【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战

    🌈个人主页: Sarapines Programmer 🔥 系列专栏: 《操作系统实验室》 🔖诗赋清音:柳垂轻絮拂人衣,心随风舞梦飞。 山川湖海皆可涉,勇者征途逐星辉。 目录 🪐1 初识Linux OS 🪐2 shell 编程的解密与实战 🌍1. 实验目的 🌍2. 实验准备 🌍3. 实验内容 🌍4. 实验心得 📝总结

    2024年02月03日
    浏览(41)
  • 第九章 shell 编程

    第九章 shell 编程 一、 编写与执行 Shell 脚本 • shell 脚本的作用类似于 DOS 的批处理文件,但无文件名规定。 • shell 脚本是文本文件,可用 vi、gedit 或其它文本编辑去创建。 • 脚本的首行应是#!/bin/sh,指明该用什么程序来解释该脚本。 • 使用 chmod +x 命令为脚本文件增加可

    2024年02月06日
    浏览(51)
  • 第九章 JUC并发编程

    http://t.csdn.cn/UgzQi 使用 AQS加 Lock 接口实现简单的不可重入锁 早期程序员会自己通过一种同步器去实现另一种相近的同步器,例如用可重入锁去实现信号量,或反之。这显然不够优雅,于是在 JSR166(java 规范提案)中创建了 AQS,提供了这种通用的同步器机制。 AQS 要实现的功能

    2023年04月08日
    浏览(25)
  • 图解==>渗透测试KAILI系统的基本操作(第九课)

    渗透测试KAILI系统的安装环境(第八课)-CSDN博客 第一部分  认识KAILI操作系统的使用 以2022年版本为例

    2024年02月07日
    浏览(33)
  • 《Linux操作系统编程》第四章 屏幕编程器vi : 了解屏幕编辑器vi的概述和基本操作命令

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月11日
    浏览(37)
  • 《TCP IP网路编程》第九章

            我们进行套接字编程时往往只关注数据通信,而忽略了 套接字具有的不同特性 。但是,理解这些特性并根据实际需要进行更改也很重要。下面列出了一些 套接字可选项 。         从表中可以看出,套接字可选项是分层的。 IPPROTO_IP 可选项是IP协议相关事项

    2024年02月16日
    浏览(25)
  • 【Linux操作系统】Linux系统编程实现递归遍历目录,详细讲解opendir、readdir、closedir、snprintf、strcmp等函数的使用

    在Linux系统编程中,经常需要对目录进行遍历操作,以获取目录中的所有文件和子目录。递归遍历目录是一种常见的方法,可以通过使用C语言来实现。本篇博客将详细介绍如何使用C语言实现递归遍历目录的过程,并提供相应的代码示例,同时解释相关函数的使用。 1.1.1 函数

    2024年02月12日
    浏览(30)
  • 《Opencv3编程入门》学习笔记—第九章

    记录一下在学习《Opencv3编程入门》这本书时遇到的问题或重要的知识点。 一、图像直方图概述 1、作用:   在每个兴趣点设置一个有相近特征的直方图所构成的标签,通过标记帧与帧之间显著的边缘、颜色、角度等特征的统计变化,来检测视频中场景的变化。 2、概念:

    2024年02月11日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包