Linux下传说中的三剑客

这篇具有很好参考价值的文章主要介绍了Linux下传说中的三剑客。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家好!我是木荣。

今天给大家聊一聊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三剑客,linux,运维,服务器

正则表达式

正则表达式应用广泛,在绝大多数的编程语言都可以应用,在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.txt
sed  -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}' testawk
awk -v FS=':' -v ORS='---' '{print $1,$2}' testawk
awk -F: '{print NF}' testawk
awk -F: '{print $(NF-1)}' testawk  #显示倒数第2列

linux三剑客,linux,运维,服务器

小结

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

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

到了这里,关于Linux下传说中的三剑客的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Linux文本三剑客---awk

    Linux文本三剑客之一(grep,sed,awk),功能最强大的文本工具。 逐行读取输入的文本内容,默认以空格和tab键作为分隔符。但是多个空格或者tab键的空格,会自动压缩成一个,然后按照指定的模式和条件执行编辑命令 可以在免交互的情况下,实现复杂的文本操作。完成自动化配

    2024年02月07日
    浏览(47)
  • Linux:文本三剑客之awk

    awk:是一种 处理文本文件的语言 ,是一个强大的 文本分析工具 。 awk: 逐行读取文本 ,默认以 空格 或 tab键 为分隔符 进行分隔 ,将分隔所得的 各个字段 保存到 内建变量 中,并按模式或者条件执行编辑命令。 1、sed命令常用于一整行的处理,而awk比较 倾向于将一行分成

    2024年02月05日
    浏览(56)
  • Linux 三剑客命令之 awk 详解

    目录 一、Awk 实战讲解 1.1 awk 的原理 1.2 BEGIN 和 END 模块 1.3 运算符 1.4 常用 awk 内置变量 1.5 awk 正则 1.6 awk 常用字符串函数         awk 是一种很棒的语言,它适合文本处理和报表生成,其语法较为常见,借鉴了某些语言的一些精华,如 C 语言等。在 linux 系统日常处理工作中

    2024年02月03日
    浏览(154)
  • Linux三剑客——Linux grep命令详解:查找文件内容

    很多时候,我们并不需要列出文件的全部内容,而是从文件中找到包含指定信息的那些行,要实现这个目的,可以使用 grep 命令。 grep 命令 作为 Linux 文本处理三剑客的一员,另外两个是 sed 和 awk ,我们会在后面的文章中作详细介绍。 grep 命令 的由来可以追溯到 UNIX 诞生的

    2024年02月11日
    浏览(55)
  • Linux文本三剑客---grep、sed、awk

    awk、grep、sed是linux操作文本的三大利器,三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂。grep更适合单纯的查找或匹配文本,sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较复杂格式处理。 1、grep 1.1 命令格式 1.2命令功能

    2024年02月14日
    浏览(50)
  • linux文本三剑客---grep,sed,awk

    目录 grep 什么是grep? grep实例演示 命令参数: 案例演示: sed 概念:  常用选项: 案例演示: awk 概念: awk常用命令选项: awk变量: 内置变量 自定义变量 awk的简单案例 在“a b c d”的d后面插入三个字符 统计tcp连接状态数量  统计日志中状态码非200的IP的次数 什么是grep?

    2024年02月13日
    浏览(54)
  • 快速上手Linux核心命令(五):文本处理三剑客

    目录 前言 正则表达式 第一剑客 grep 第二剑客 sed 第三 剑客 awk 小结 上一篇中已经预告,我们这篇主要说Linux文本处理 三剑客 。他们分别是 grep 、 sed 、 awk 。既然能被业界称为三剑客,可见其在Linux命令中占有举足轻重得地位。所以呢,这里也专门写一篇文章说一说其用法。

    2023年04月25日
    浏览(59)
  • Linux文本三剑客(grep、sed、awk)

    目录 grep 1、什么是grep和rgrep? 2、使用grep 2.1、命令格式 2.2、命令功能 2.3、命令参数 3、实战演示 sed 1、认识sed 2、使用sed 2.1、命令格式 2.2、常用选项options 2.3、地址定界 2.4、编辑命令command 3、sed用法演示 3.1、常用选项用法演示 3.2、sed地址定界演示 3.3、编辑命令command演示

    2024年02月03日
    浏览(50)
  • linux命令三剑客grep、sed、awk

    准备 grep、sed、awk号称\\\"linux三剑客\\\",使用频繁,功能强大,本文通过一个实例演示下基本用法。首先准备一个文本文件,命名为text.txt,写入文件内容: grep 首先,最简单的是grep。经常用来过滤查看日志。对于grep需要知道如下几个常用的命令选项: -n: 额外输出行号。例如过

    2024年02月05日
    浏览(80)
  • Linux中字符处理三剑客(grep sed awk )

    在 Linux 系统中,字符处理流程可以利用三个常用的工具来完成,三剑客的具体说明如下: grep:grep 是一种强大的文本搜索工具,可以搜索文件内容中包含指定文本的行,并打印出包含该文本的行。grep 命令通常用于搜索日志文件、配置文件等。 在Linux中,\\\"grep\\\"是一种文本搜索

    2024年02月08日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包