Linux中grep、sed和awk命令详解_第1页
Linux中grep、sed和awk命令详解_第2页
Linux中grep、sed和awk命令详解_第3页
Linux中grep、sed和awk命令详解_第4页
Linux中grep、sed和awk命令详解_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

WordLinux中grep、sed和awk命令详解

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

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

为什么聊起这个(话题)呢?

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

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

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

1、grep命令

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

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

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

格式:grep[op(ti)on]pat(te)rnfile

参数-a不要忽略二进制数据。-A除了显示符合范本样式的行之外,并显示该行之后的指定几行内容。-B除了显示符合范本样式的行之外,并显示该行之前的指定几行内容。-C除了显示符合范本样式的那一行之外,并显示该行前后指定几行的内容。-b在显示符合范本样式的那一行之外,并显示字节偏移量。-c只计算显示符合范本样式的行数,不显示详细内容-d当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。-e指定字符串作为查找文件内容的范本样式。-E将范本样式为延伸的普通表示法来使用,意味着能使用扩展正则表达式。-f指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。-F将范本样式视为固定字符串的列表。-G将范本样式视为普通的表示法来使用。-h在显示符合范本样式的那一列之前,不标示该列所属的文件名称。-H在显示符合范本样式的那一列之前,标示该列的文件名称。-i忽略字符大小写的差别。-l列出文件内容符合指定的范本样式的文件名称。-L列出文件内容不符合指定的范本样式的文件名称。-n在显示符合范本样式的那一列,标示出该列的编号。-q不显示任何信息。-R/-r此参数的效果和指定“-drecu(rs)e”参数相同,表明查找路径为目录-s不显示错误信息。-v反转查找,显示不符合模式的所有信息-w只显示全字符合的列。-x只显示全列符合的列。-y此参数效果跟“-i”相同。-o只输出文件中匹配到的部分。--color=auto把匹配部分标记出来,要想当前终端后续使用都要标记匹配部分,可用alias命令重新封装grep。示例:

正则表达式

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

格式

.匹配任意单个字符,不能匹配空行[]匹配指定范围内的任意单个字符[^]取反[:alnum:]或[0-9a-zA-Z][:alpha:]或[a-zA-Z][:上部:]或[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'2p'test.txt#要加-n,否则会默认自动打印所有内容#输出指定行sed-n'2,7p'test.txtsed-n'2,7p'test.txtsed-n'2,7{p}'test.txt#替换文件中内容sed-i's/bck/sh/'test.txttest1.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[选项]'prog(ram)'var=valuefile...awk[选项]-f程序文件var=valuefile...awk[options]'BEGIN{action;...}pattern{action;...}END{action;...}'文件...

常用命令选项

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

awk-vFS=':''{print$1,$2}'testawk#FS指定输入分隔符awk-vFS=':'-vOFS='''{print$1,$2}'testawk#OFS指定输出分隔符awk-vRS=':''{print$1,$2}'testawkawk-vFS=':'-vORS='''{print$1,$2}'testawkawk-F:'{print

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论