热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Linuxshell编程之awk与sed使用详解

文章标题:Linuxshell编程之awk与sed使用详解。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

    Linux shell编程之awk的用法

    1. awk的使用

    基本功能:在文件或字符串中基于指定规则浏览和抽取信息。awk抽取信息後,才能进行其他文本操作。完整的awk脚本通常用来格式化文本文件信息。

    调用方式:1. 命令行方式

    2. 将所有awk命令插入一个文件,并使awk程序可执行,然后使awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用它。

    3. 将所有的awk命令插入一个单独文件,然后调用。

    选项说明:-F 域符号 缺省为空格

    -f 指明awk脚本

    2. 模式和动作

    1. 任何awk语句都由模式和动作组成。在一个awk脚本中可能有许多语句。

    模式部分决定动作语句何时触发及触发事件。模式缺省为执行状态。

    处理即对数据进行的操作。

    2. 模式可以是任何条件语句或复合语句或正则表达式。

    3. 模式包括两个特殊字段BEGIN和END。

    域和记录

    域标识:$1,$2,…,$n。用逗号做域分隔。$0表示所有域。

    打印域或所有域:print命令

    注:当碰到awk错误时,可相应查找:

    1. 确保整个awk命令用单引号括起来

    2. 确保命令内所有引号成对出项

    3. 确保用花括号括起动作语句,用圆括号括起条件语句

    4. 不要忘记使用花括号

    条件操作符

    ~ 匹配正则表达式

    !~  不匹配正则表达式

    内置变量:

    NF:每一条记录中域名数

    是将变量$PWD的返回值传入awk并显示其目录。

    可以利用NF获取文件名

    注:但这里指定域分隔符为/

    NR:记录个数

    Linux shell编程之sed用法

    1. 是一个非交互性文本流编辑器。它编辑文件或标准输入导出的文本拷贝。

    2. 通过行号或正则表达式指定要改变的文本行

    3. sed不与初始文件打交道,而只与它的一个拷贝打交道,如果操作结果没有重定向到一个文件,那么将输出到屏幕。

    调用方式:

    a. 命令行方式

    b. 将sed命令插入脚本文件中,然后调用sed

    c. 将sed命令插入脚本文件中,使得脚本文件为可执行。

    保存sed输出

    重定向到一个新文件 >

    sed中定位文本的方式

    x          一行号

    x,y       行号范围

    /pattern/ 查询包含模式的行

    /pattern/pattern/     查询包含两个模式的行

    /pattern/,x              在指定行号上查询匹配模式的行

    x,/pattern/              通过行号和模式查询匹配行

    x,y!                  查询不包含行号x,y的行

    sed编辑命令

    p     打印文本

    匹配元字符$前,必须使用反斜线\

    =  打印行号      使用-e选项

    如果既打印行号又打印匹配行,必须使用两个sed命令,并使用-e选项

    附加文本

    使用符号a\ ,可以指定文本一行或多行附加到指定行。若不指定文本放置位置位置,sed缺省放置在每一行后面。

    创建sed脚本文件

    创建脚本文件,第一行为:

    #!/bin/sed -f       ----注 说明sed命令解释行。脚本在这一行查找sed以运行命令,这里定位在/bin

    插入文本:在指定行前面插入,它也只接受一个地址。

    删除文本:d

    替换命令用替换模式替换指定模式

    使用sed实现的一个重要功能是在另一个系统中下载的文件中剔除控制字符。

    1. 使用s/-*//g删除横线-----

    2. 使用/^$s/d删除空行

    3. 使用$d删除最后一行

    4. 使用1d删除第一行

    5. 使用awk{print $1}打印第一列

 


推荐阅读
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • GIMP 2.99.2 发布:UI 采用 GTK3 实现、原生支持高分屏和 Wayland
    开源项目评选最后一周,手里的5票再不用就没用了https:www.oschina.netprojecttop_cn_2020GIMP2.99.2已发布,同时这也标志着GIMP3.0的到来,其中最显著的变化是从GTK2过渡到GTK3工具包。基于 ... [详细]
  • 如何使用PyCharm及常用配置详解
    对于一枚pycharm工具的使用新手,正确了解这门工具的配置及其使用,在使用过程中遇到的很多问题也可以迎刃而解,文中有非常详细的介绍, ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • SPSS操作指南:双变量相关性分析的详细步骤
    本教程将详细介绍如何使用IBM SPSS Statistics进行双变量相关性分析。通过实例演示,帮助读者理解变量间的关系及其统计意义。 ... [详细]
  • 如何在CAD查看器中同时打开并对比两张DWG图纸
    本文将详细介绍如何使用专业的CAD查看软件,如迅捷CAD看图,来同时打开和对比两张DWG格式的CAD图纸。无论是在设计审核还是项目管理中,掌握这一技能都能显著提高工作效率。 ... [详细]
  • 编写了几个500行左右代码的程序,但基本上解决问题还是面向过程的思维,如何从问题中抽象出类,形成类的划分和设计,从而用面向对象的思维解决问题?有这方面的入门好书吗?最好是结合几个具体的案例分析的 ... [详细]
  • Qt QTableView 内嵌控件的实现方法
    本文详细介绍了在 Qt QTableView 中嵌入控件的多种方法,包括使用 QItemDelegate、setIndexWidget 和 setIndexWidget 结合布局管理器。每种方法都有其适用场景和优缺点。 ... [详细]
  • Ulysses Mac v29:革新文本编辑与写作体验
    探索Ulysses Mac v29,这款先进的纯文本编辑器为Mac用户带来了全新的写作和编辑环境。它不仅具备简洁直观的界面,还融合了Markdown等标记语言的最佳特性,支持多种格式导出,并提供强大的组织和同步功能。 ... [详细]
  • 本文详细介绍了Vim编辑器的三种主要模式及其常用命令,帮助用户更好地掌握这一强大的文本编辑工具。 ... [详细]
  • 解决Windows 10开机频繁自检问题的实用方法
    许多用户在使用Windows 10系统时,经常会遇到开机时自动进行磁盘检查的情况。这不仅影响了开机速度,还可能带来不必要的麻烦。本文将详细介绍如何通过简单的注册表修改来避免每次开机时的磁盘自检,提升系统启动效率。 ... [详细]
  • 本文详细介绍了流编辑器sed中的G、H、g、h命令,探讨了它们的工作原理及应用场景。通过实例解析和图解分析,帮助读者掌握这些高级命令的使用方法。 ... [详细]
  • HTML基础入门指南
    本文将深入浅出地介绍HTML的基础知识,包括其定义、开发工具、制定机构、特性、基本标签及更多实用内容。 ... [详细]
  • 本文介绍了解决Oracle 10G数据库中ORA-12541 TNS: no listener错误的详细步骤。该错误通常发生在监听器服务未正确启动或配置不当的情况下,文章将指导您通过检查服务状态、配置注册表和启动监听器来解决问题。 ... [详细]
author-avatar
张鹏22_981
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有