返回顶部
首页 > 资讯 > 操作系统 >Linux下传说中的三剑客
  • 161
分享到

Linux下传说中的三剑客

linux运维服务器 2023-09-16 09:09:59 161人浏览 八月长安
摘要

大家好!我是木荣。 今天给大家聊一聊linux中文本操作的三剑客:awk、grep、sed,因其功能强大、使用频繁,且是Linux下文本处理的得力利器,常被称之为文本三剑客。grep常用于查找,sed

大家好!我是木荣。

今天给大家聊一聊linux中文本操作的三剑客:awk、grep、sed,因其功能强大、使用频繁,且是Linux下文本处理的得力利器,常被称之为文本三剑客grep常用于查找,sed常用于取行和替换,而awk常用于运算。

有句玩笑话常说:做Linux技术不识三剑客,玩遍Linux也枉然,虽然是玩笑语,但也不得不说他们的重要性。

为什么聊起这个话题呢?

最近这几天有点忙,可能是快到了毕业季了,最近来公司的面试的应届生突然多了起来。在对应届生的面试过程中,往往会涉及一些基本的技术知识,主要看重的是对基础知识的掌握和对新知识的学习能力。而Linux下常用的基本命令awk、grep、sed也是常常被问及,来反映对Linux操作熟悉的程度。

问题:如何在Linux下查找包含某个函数的文件及所在的行?

熟悉Linux操作的肯定会说so easy!
此处先不给出具体答案,我们详细介绍一下三剑客命令,如果不知道,看完后你肯定会知道答案!

1、grep命令

grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。它是Linux系统中一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

shell脚本中也经常使用grep,因为grep通过返回一个状态值来说明搜索的结果。如果搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。

grep家族包括grep、egrep和fgrep。egrep和fgrep的命令跟grep区别不大。egrep是grep的扩展,支持更多的re元字符,fgrep是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示其自身的字面意义。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

格式:grep [option] pattern file

  • 参数

  • -a 不要忽略二进制数据。

  • -A <显示行数> 除了显示符合范本样式的行之外,并显示该行之后的指定几行内容。

  • -B<显示行数> 除了显示符合范本样式的行之外,并显示该行之前的指定几行内容。

  • -C<显示行数> 除了显示符合范本样式的那一行之外,并显示该行前后指定几行的内容。

  • -b 在显示符合范本样式的那一行之外,并显示字节偏移量。-c 只计算显示符合范本样式的行数,不显示详细内容

  • -d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。

  • -e<范本样式> 指定字符串作为查找文件内容的范本样式。

  • -E 将范本样式为延伸的普通表示法来使用,意味着能使用扩展正则表达式。

  • -f <范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。

  • -F 将范本样式视为固定字符串的列表。

  • -G 将范本样式视为普通的表示法来使用。

  • -h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。

  • -H 在显示符合范本样式的那一列之前,标示该列的文件名称。

  • -i 忽略字符大小写的差别。

  • -l 列出文件内容符合指定的范本样式的文件名称。

  • -L 列出文件内容不符合指定的范本样式的文件名称。

  • -n 在显示符合范本样式的那一列,标示出该列的编号。

  • -q 不显示任何信息。

  • -R/-r 此参数的效果和指定“-d recurse”参数相同,表明查找路径为目录

  • -s 不显示错误信息。

  • -v 反转查找,显示不符合模式的所有信息

  • -w 只显示全字符合的列。

  • -x 只显示全列符合的列。

  • -y 此参数效果跟“-i”相同。

  • -o 只输出文件中匹配到的部分。

  • –color=auto 把匹配部分标记出来,要想当前终端后续使用都要标记匹配部分,可用alias命令重新封装grep。

示例:
在这里插入图片描述

正则表达式

正则表达式应用广泛,在绝大多数的编程语言都可以应用,在Linux中,也有着很大的用处。使用正则表达式,可以有效的筛选出需要的文本,然后结合相应的支持的工具或语言,完成我们的需求。

格式

  • .匹配任意单个字符,不能匹配空行

  • [] 匹配指定范围内的任意单个字符

  • [^] 取反

  • [:alnum:] 或 [0-9a-zA-Z]

  • [:alpha:] 或 [a-zA-Z]

  • [:upper:] 或 [A-Z]

  • [:lower:] 或 [a-z]

  • [:blank:] 空白字符(空格和制表符)

  • [:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)

  • [:cntrl:] 不可打印的控制字符(退格、删除、警铃…)

  • [:digit:] 十进制数字 或[0-9]

  • [:xdigit:]十六进制数字

  • [:graph:] 可打印的非空白字符

  • [:print:] 可打印字符

  • [:punct:] 标点符号

  • * 匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配

  • .* 任意长度的任意字符,不包括0次

  • ? 匹配其前面的字符0 或 1次

  • + 匹配其前面的字符至少1次

  • {n} 匹配前面的字符n次

  • {m,n} 匹配前面的字符至少m 次,至多n次

  • {,n} 匹配前面的字符至多n次

  • {n,} 匹配前面的字符至少n次

我们可以根据grep命令任意组合正则表达式

2、sed命令

主要用来自动编辑一个或多个文件, 简化对文件的反复操作

sed是一种流编辑器,一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容输出。然后读入下行,执行下一个循环。如果没有使诸如‘D’的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出或-i。

格式:sed [options] ‘command’ file(s)
常用参数:

  • -n:不输出内容到屏幕,即不自动打印,只打印匹配到的行
  • -e:多点编辑,对每行处理时,可以有多个Script
  • -f:把Script写到文件当中,在执行sed时-f指定文件路径,如果是多个Script,换行写
  • -r:支持扩展的正则表达式
  • -i:直接将处理的结果写入文件
  • -i.bak:在将处理的结果写入文件之前备份一份

示例:

sed   '='  test.txt         #显示行号sed   '3='  test.txt        #显示第三行行号sed  "/./="  test.txt       #只显示非空白行的行号sed -n  "/./!="  test.txt   #只显示空白行行号sed   '$='  test.txt        #显示总共有多少行sed  -n  '2p'  test.txt     #要加-n,否则会默认自动打印所有内容sed  -n  '2 p'  test.txt    #要加-n,否则会默认自动打印所有内容# 输出指定行sed  -n  '2,7 p'  test.txt   sed  -n  '2,7p'   test.txtsed  -n  '2,7 {p}'  test.txt#替换文件中内容sed  -i  's/bck/sh/'  test.txt  test1.txt  #替换test.txt、test1.txt内的bck为sh,每行只替换一个sed  -i  's/bck/sh/g'  test.txt   #替换test.txt内的bck为sh,每行都进行全面替换sed  -i  's/bck/sh/3g'  test.txt   #替换test.txt内的bck为sh,从第3个匹配位置开始替换sed  -i  's@bck@sh@g'  test.txt   #替换test.txt内的bck为sh,每行都进行全面替换sed  -i  's#bck#sh#g'  test.txt   #替换test.txt内的bck为sh,每行都进行全面替换#显示查找内容的行sed  -n  '/sh/p'  test.txt  #显示test.txt内的所有包含sh的所有行sed  -n  '/sh/ ,$  p'  test.txt   #显示test.txt里第一条包含sh的行及以下到末尾的所有行

3、awk命令

awk用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。awk其实不仅仅是工具软件,还是一种编程语言。

格式:
awk [options] ‘program’ var=value file…
awk [options] -f programfile var=value file…
awk [options] ‘BEGIN{ action;… } pattern{ action;… } END{ action;… }’ file …

常用命令选项

  • -F fs:fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:
  • -v var=value:赋值一个用户定义变量,将外部变量传递给awk
  • -f scripfile:从脚本文件中读取awk命令

示例:

awk -v FS=':' '{print $1,$2}' testawk  #FS指定输入分隔符awk -v FS=':' -v OFS='---' '{print $1,$2}' testawk  #OFS指定输出分隔符awk -v RS=':' '{print $1,$2}' testawkawk -v FS=':' -v ORS='---' '{print $1,$2}' testawkawk -F: '{print NF}' testawkawk -F: '{print $(NF-1)}' testawk  #显示倒数第2列

在这里插入图片描述

小结

上述三个命令的功能及参数远远不止本文提到的这些,在此知识罗列了一些常用的功能及参数。这三个命令的功能非常强大,用法及参数和功能也非常的多,我们没必要刻意去记忆,也不可能全部记住,记住一些常用的参数及用法即可。只要当我们有需求时知道用哪个命令然后对应的去查找相关参数用法即可。

👇👇👇👇点击最下方名片,领取Linux硬核学习资料👇👇👇👇

来源地址:https://blog.csdn.net/tgdzsjh/article/details/130496311

--结束END--

本文标题: Linux下传说中的三剑客

本文链接: https://lsjlt.com/news/409697.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Linux下传说中的三剑客
    大家好!我是木荣。 今天给大家聊一聊Linux中文本操作的三剑客:awk、grep、sed,因其功能强大、使用频繁,且是Linux下文本处理的得力利器,常被称之为文本三剑客。grep常用于查找,sed...
    99+
    2023-09-16
    linux 运维 服务器
  • Linux三剑客之awk命令详解
    目录 一、awk常见用法 二、案例         2.1、awk中-F的使用         2.2、awk中几个特殊的内部变量         用法:  三、实战案例 一、awk常见用法         通常情况下awk所使用的命令...
    99+
    2023-10-27
    linux java 运维 shell 服务器
  • linux三剑客是什么及有什么用
    Linux三剑客是指在Linux系统中常用的三个命令行工具,分别是grep、sed和awk。1. grep(Global Regul...
    99+
    2023-09-12
    linux
  • web开发中网页三剑客是哪三个软件
    这篇文章主要为大家展示了“web开发中网页三剑客是哪三个软件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“web开发中网页三剑客是哪三个软件”这篇文章吧。网页三剑客是指Dreamweaver、F...
    99+
    2023-06-29
  • Unix、Numy和PHP:开发技术的三剑客?
    Unix、NumPy和PHP是三种不同的编程技术,它们各自在不同的领域里拥有着广泛的应用。但是,这三种技术也有一些共同点,它们都可以用于开发高效、功能强大的应用程序。本文将深入探讨这三种技术,以及它们在开发中的优势和缺点。 Unix是一种操...
    99+
    2023-10-21
    numy unix 开发技术
  • Shell文本处理三剑客之sed的使用
    sed 是 stream editor 的缩写,流编辑器,主要用于对标准输出或文件进行处理。 语法: stdout | sed [option] "pattern command" sed [option] "pa...
    99+
    2022-06-04
    Shell sed文本处理 Shell sed
  • Linux- 系统随你玩之--文本处理三剑客-带头一哥-awk
    文章目录 1、awk概述 2、awk原理 2.1、 awk 工作原理 2.2、 与sed工作原理比较 2.3、 awk与sed的区别 3、使用方法及...
    99+
    2023-09-09
    运维 linux 服务器 bash
  • 说说我心中的Linux系统
     我不知道在阅读此篇文章的你,是一个什么样的人,或许你只是偶然看到此篇文章的路人,或许是对linux有兴趣但没接触过linux的圈外人,或许是已经入行没多久的菜鸟,或许是喜欢linux却学习不下去预备放弃的人更或许你是linux运...
    99+
    2023-06-05
  • Java中http下载文件客户端和上传文件客户端的示例分析
    这篇文章主要介绍了Java中http下载文件客户端和上传文件客户端的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、下载客户端代码package java...
    99+
    2023-05-30
    java http
  • Linux下SSH登录的三种方式
    SSH登录 SSH密钥登录:SSH默认采用密码登录,这种方法有很多缺点,简单的密码不安全,复杂的密码不容易记忆,每次手动输入也很麻烦。密钥登录是更好的解决方案。接下来介绍三种SSH的登录方式。 一:SSH口令登录 1 登录原理 SS...
    99+
    2023-09-04
    ssh linux 服务器 Powered by 金山文档
  • linux下上传下载文件夹的方法
    linux下目录复制:本机->远程服务器 scp -r /home/shaoxiaohu/test1 zhidao@192.168.0.1:/home/test2 test1为源目录,test2为目标目录,z...
    99+
    2022-06-04
    linux 上传文件夹 linux下载文件夹
  • Linux中的svn客户端RabbitVCS
    RabbitVCS是Linux平台上的一个SVN客户端。它是一个集成到文件管理器(如Nautilus和Thunar)的插件,使用户能...
    99+
    2023-09-20
    Linux
  • linux下Redis 2.x 的安装与配置说明
    redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,...
    99+
    2022-06-04
    linux Redis
  • PostgreSQL - Linux 下的图形化客户端/管理器
    官方有个维基页面列出很多客户端。https://wiki.postgresql.org/wiki/PostgreSQL_Clients  Fedora软件库只能下载pgAdmin 3,无法找到pgAdmin 4。可能是因为pgAdmin ...
    99+
    2015-03-15
    PostgreSQL - Linux 下的图形化客户端/管理器
  • Linux系统下的Samba客户端配置步骤
    本篇内容介绍了“Linux系统下的Samba客户端配置步骤”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Samba客户端配置首先先记录下在l...
    99+
    2023-06-13
  • linux中rz上传、sz下载命令详解
    rz,sz是便是linux/Unix同Windows进行ZModem文件传输的命令行工具。 使用前提: 首先,你的Linux端(CentOS, Ubuntu)需要安装rz/sz命令,也就是 lszrz 包。 其次,wi...
    99+
    2022-06-04
    rz sz rz sz 安装 linux rz sz
  • Linux中的常用符号说明
    本篇内容主要讲解“Linux中的常用符号说明”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux中的常用符号说明”吧!一、通配符:“*”、“”  和DOS下一样,当我们不知道确切的文件名时,...
    99+
    2023-06-10
  • 对linux下syslogd以及syslog.conf文件的解读说明
    1: syslog.conf的介绍 对于不同类型的Unix,标准UnixLog系统的设置,实际上除了一些关键词的不同,系统的syslog.conf格式是相同的。syslog采用可配置的、统一的系统登记程序,随时从系统各处...
    99+
    2022-06-04
    linux syslogd syslog.conf
  • Linux下备份与压缩命令的使用说明
    这篇文章主要介绍“Linux下备份与压缩命令的使用说明”,在日常操作中,相信很多人在Linux下备份与压缩命令的使用说明问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux下备份与压缩命令的使用说明”的疑...
    99+
    2023-06-13
  • Linux根目录下的主要目录功能说明
    这篇文章主要讲解了“Linux根目录下的主要目录功能说明”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux根目录下的主要目录功能说明”吧!/bin:存放最常用命令;   /boot:启...
    99+
    2023-06-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作