Linux三剑客之sed和awk的基本应用

简介:

一、sed

1)sed简介

  sed的全称为stream editor,sed在处理时一次只读取文件的一行并对这一行进行处理,并且sed将处理后的数据只会显示在屏幕上,并不会对原文件进行修改,所以说sed是一个行编辑器

2)sed的使用格式

      sed [options] "script" FILE....

3)详解各选项与编辑命令的使用

    选项:

     -n:静默模式,不输出模式空间内的内容,默认打印空间模式内的内容

     -r:扩展的正则表达式

     -f 文件:指定sed脚本文件

     -i:直接编辑源文件

    编辑命令

      d:删除

      p:打印

      i \:在被指定到的行前面插入文本

      a \:在被指定到的行下面插入文本

      r 文件路径:在指定的位置插入另外一个文件的内容

      w 文件路径:将符合条件的所有行保存至指定的文件中

      = 显示符合条件的所在行的行号

      s@@@:查找条件也可以使用模式,但是被替换的内容不能使用模式  

          使用格式:

              sed '地址定界s@查找条件@替换后的文本@修饰符

              地址定界:自定义的起始行到结束行,默认为全文

                   有三种方式表示

                      startline,endline

                        /pat1/,/pat2/

                        /pattern/

              用法:sed [options] 'addr1[,addr2]编辑命令'FILE...

                   sed [options] "addr1[,addr2]编辑命令"FILE...

                  sed在做替换时还支持正则表达式,正则表达式的使用本处不做讲解。

              修饰符:

                   g:global,全局替换

                   i:ignore-case,不区分字符大小写

4)练习

1)替换/etc/inittab文件中”id:3:initdefault:"一行中的数字为5

    sed 's@\(id:\)[0-9]\(:initdefault\)@\15\2' /etc/inittab

2)删除/etc/init.d/funcions文件中的空白行

    sed "/^$/d" /etc/init.d/funcions

3)删除/etc/inittab文件中位于行首的#;

    sed 's@^#@@g' /etc/inittab

4)删除/etc/rc.d/rc.sysinit文件中以#后跟至少一个空白字符开头的行的行首的#和空白字符。

   sed "s@^#[[:space:]]\{1,\}\@@g" /etc/rc.d/rc.sysinit

5)删除/boot/grub/grub.conf文件中行首的空白字符。

   sed "s@^[[:space:]]\{1,\}@@g" /boot/grub/grub.conf

6)取出一个文件路径的目录名称,如/etc/sysconfig/network,其目录为/etc/sysconfig,功能类似dirname命令;

  echo /etc/sysconfig/network | sed "s@[^/]\{1,\}/\?$@@"

二、awk

1)简介

  awk是一个报告生成工具,旨在把文件中读取到的每一行的每个字段分别进行格式化,而后进行显示,awk支持使用变量、条件判断、循环、数组

  现在linux系统上用到的都是gawk

2)格式:

  awk [options] 'script'FILE....

  awk [options] '/pattern/{action}'FILE...

3)选项与模式的使用

   选项

    -F:指定切割符,默认为空白

    $0:整行显示

    $1,$2.......:位置参数

   模式

      地址定界:

       /pat1/,/pat2/,表示一个范围

       /pattern/,表示被匹配到的行

       表达式

       >,>=,<,<=,==,!=,~

      BEGIN:表示在执行动作前要做的操作

      END:表示在动作执行后的操作

  awk的常用四种分隔符:

      输入:

         行分隔符

         字段分隔符

      输出:

         行分隔符

         字段分隔符  

    awk的内置变量

     NF:最后一个字段

     FS:指定输入分隔符,在BEGIN中定义,相当于-F,默认为空白

     OFS:指定输出时的分隔符,在BEGIN中定义,默认为空白

4)练习

1.显示GID小于500的组

    awk -F : '$3<500{print $1}' /etc/group

2.显示默认的shell为nologin的用户

    awk -F : '$7~/nologin$/{print $1}' /etc/passwd

3,显示eth0网卡文件的配置信息,注意,只显示等号后面的值

    awk -F = '{print $2}' /etc/sysconfig/network-scripts/ifcfg-eth0

4.显示/etc/sysctl。conf文件中定义的内核参数:只显示名称,

    awk -F =' !/^#|^$/{print $1}'/etc/sysctl.conf

5.显示eth0网卡的ip地址,通过ifconfig命令结果进行过滤

   ifconfig eth0 |awk '/inet addr/{print $2}' |awk -F : '{print $2}'

建议:如果只是为了显示文本内容,建议优先考虑grep



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

相关文章
|
安全 应用服务中间件 网络安全
在Linux环境部署Flask应用并启用SSL/TLS安全协议
至此,你的Flask应用应该能够通过安全的HTTPS协议提供服务了。记得定期更新SSL证书,Certbot可以帮你自动更新证书。可以设定cronjob以实现这一点。
980 10
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
1195 13
|
存储 数据采集 监控
ubuntu(linux)系统主要应用于哪些工业场景中?研维三防ubuntu系统的手持工业三防平板电脑在哪些行业中有实际应用
Ubuntu 系统凭借其独特的优势,在众多工业场景中得到了广泛应用,为工业数字化、智能化发展提供了有力支持。而研维三防基于 Ubuntu 定制系统的手持工业三防平板电脑,更是将 Ubuntu 系统的优势与工业级的性能、坚固耐用性完美结合,在电力、物流、制造等多个行业中展现出强大的应用价值,助力企业提高生产效率、优化管理流程、提升产品质量,成为推动工业现代化发展的重要力量。随着技术的不断进步与创新,相信 Ubuntu 系统以及研维三防这类工业级设备将在更多的工业领域中发挥更大的作用,为工业发展带来更多的机遇与变革。
|
机器学习/深度学习 安全 Linux
Linux 主要应用领域的归纳
服务器领域 Linux在服务器领域的应用是其最为广泛和成熟的领域之一。由于其开源、稳定、高效和安全的特性,Linux成为许多企业服务器的首选操作系统。 Web服务器:Linux是Web服务器的理想选择,因为它支持Apache、Nginx等流行的Web服务器软件,这些软件在Linux上运行稳定且性能卓越。Linux服务器可以高效地处理大量并发请求,提供快速、可靠的Web服务。 数据库服务器:Linux也广泛用于数据库服务器,如MySQL、PostgreSQL和Oracle等数据库管理系统在Linux上运行良好。Linux的稳定性和安全性使得它成为存储和管理敏感数据的理想平台。 邮件服务器:Lin
901 5
|
监控 Linux 数据处理
Linux grep技巧 结合awk查询
结合 `grep` 和 `awk`,可以实现灵活、高效的文本处理和数据分析。`grep` 用于快速过滤符合条件的行,`awk` 用于进一步处理和提取数据。这种组合使用在日志分析、数据处理和系统监控等场景中尤为常见。掌握这两者的基本用法和组合技巧,可以大大提升在 Linux 环境下的工作效率。
651 7
|
缓存 Linux 开发者
Linux内核中的并发控制机制:深入理解与应用####
【10月更文挑战第21天】 本文旨在为读者提供一个全面的指南,探讨Linux操作系统中用于实现多线程和进程间同步的关键技术——并发控制机制。通过剖析互斥锁、自旋锁、读写锁等核心概念及其在实际场景中的应用,本文将帮助开发者更好地理解和运用这些工具来构建高效且稳定的应用程序。 ####
425 5
|
12月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
1087 1
二、Linux文本处理与文件操作核心命令
|
12月前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
795 137
|
12月前
|
安全 Ubuntu Unix
一、初识 Linux 与基本命令
玩转Linux命令行,就像探索一座新城市。首先要熟悉它的“地图”,也就是/根目录下/etc(放配置)、/home(住家)这些核心区域。然后掌握几个“生存口令”:用ls看周围,cd去别处,mkdir建新房,cp/mv搬东西,再用cat或tail看文件内容。最后,别忘了随时按Tab键,它能帮你自动补全命令和路径,是提高效率的第一神器。
1731 58