文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Linux下传说中的三剑客

2023-09-16 09:21

关注

大家好!我是木荣。

今天给大家聊一聊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

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

正则表达式

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

格式

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

2、sed命令

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

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

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

示例:

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 …

常用命令选项

示例:

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯