grep

  • grep 标准
  • egrep 扩展grep,支持基本和正则,执行效果与grep -E相似
  • fgrep 快速grep,允许查找字符串而不是一个模式

常用参数

-c 只输出匹配的行的总数(count)
-C 加参数num表示,显示匹配的行,及其前后num行
-d 当参数不是普通文件而是目录时
-f 把要匹配的模式写进一个文件中,然后传给grep
-h 查询多个文件时,不显示文件名
-l 查询多个文件时,只输出包含匹配模式的文件的文件名
-n 显示匹配的行及行号
-s 不显示不存在或无匹配文件等错误信息(silence)
-v 只显示不包含匹配模式的行

实例

grep -c “fa>” file1 表示匹配fa,23fa等,不匹配falv这种形式,输出行数
grep -C 2 “fa>” file1 表示输出匹配行,并输出其前后两行
grep -E “[1-9]+” 或 egrep “[1-9]+” ,表示匹配一个数字或多个数字
grep -f file1 file2 表示将file1作为pattern,用file1每一行为一个模式去匹配file2中每一行,当文件大时,消耗很大
grep -v ‘^$’ file 去除文件file中的空行
grep -rl “eth0” /etc 查看/etc目录中于”eth0”有关的文件的文件名


awk

基本功能是在文件或字符串中基于指定规则来分解抽取信息,也可以基于指定的规则来输出数据。完整的awk脚本通常用来格式化文本文件中的信息。

三种方式调用

  1. awk [opion] ‘awk_script’ inputfile1 [inputfile2 …]
    -F fs 使用fs作为输入记录的字段分隔符,若省略,则使用环境变量IFS的值
    -f filename 从filename中读取awk_script
    -v var=value 为awk_script设置变量
  2. 将awk_script放入脚本并以#!/bin/awk -f作为首行,给脚本执行权限,然后在shell下通过键入脚本名调用
  3. 将所有的awk_script插入一个单独脚本文件,然后调用awk -f 脚本文件

awk变量

1)awk内部变量,用于存储awk运行时的各种参数

自动内部变量,不应被赋值和改变的

 NF   当前输入字段的字段数NR   对当前输入文件而已,已经被awk读取过的记录(行)数FNR   已经被aw读取过的记录总数。 当仅有一个输入文件时,FNR和NR一致FILENAME   当前输入文件的文件名ARGC   命令行参数的个数(不包括awk_script, 实际就是输入文件数目加1)ARGIND   当前被处理的文件在数组ARGV内的索引(实际上ARGV[1]就是第一个输入文件)举例: awk '{print NR, NF, $0} END {print FILENAME}' input_file

字段变量(00 1 22 3…)当awk把当前输入记录分段时,会对这些字段变量赋值。和内部变量类似,在awk运行过程中字段变量的值是动态变化的。不同的是,修改这些字段变量的值是有意义的,被修改的字段值,可以在输出中体现

其他内部变量:可以修改

  FS   输入记录的字段分隔符(默认空格和制表符)OFS   输出记录的字段分隔符(默认是空格)OFMT   数字的输出格式(默认是%.6g)RS   输入记录见的分隔符(默认是NEWLINE)ORS   输出记录见的分隔符(默认是NEWLINE)ARGV   命令行参数数组ENVIRON   存储系统当前环境变量值的数组,它的每个成员的索引就是一个环境变量名,而对应的值就是相应环境变量值。 赋值后,新值只在awk_script中有效
2)自定义变量
 a)varname=value(不需要提前声明)b)在表达式中,不带双引号的字符串都被视为变量,如果之前没被赋值,默认值0或空字符串
3)向命令行awk传递变量值
 awk 'awk_script' awkvar1=value1 awkvar2=value2 .... inputfileawkvar可以是awk内置变量或自定义变量awkvar的值将在awk开始对输入文件的第一条记录应用awk_script前传入。如果在awk_script中已经对某个变量赋值,那么在命令行上传入到该变量的值就会无效。(被覆盖)在awk脚本中,不能直接使用shell变量。

内置函数

     int(x)   qiux的整数部分(int(-3.9)值是-3,int(3.8)值是3)sqrt(x)   求出x正的平方根值exp(x)   求x的次方log(x)   求x的自然对数sin(x)   求x的sine值cos(x)   求x的cosine值atan2(y, x)   求y/x的arctangent值rand()   得到一个分布在0-1的苏技术,每次执行gawk,rand从相同的seed生成值srand(x)   设定产生随机数的seed为x,如果在第二次运行awk时,设定相同seed值,会得到相同随机数。 省略引数x,如srand(),则当前日期会被当做seed,得到真正的随机数。index(in, find)  返回in中,find第一次出现的位置,索引从1开始,如果in中没有find,返回0length(s)   求出s的字符个数match(s, r)   返回模式字符串r在s第一次出现的位置,若s不包含r,返回0sprintf(fmt, exp1, ...)   返回经过fmt格式化后的expsub(p, r, t)   在字符串t中寻找符合模式字符串p的最靠前最长的位置,并以字符串r代替最前的pgsub(p, r, t)   在字符串t中以r代替所有的psubstr(str, st, len)   传回str的zi字符串,其长度为len,从strd位置st开始, len默认从st到结束split(s, a, fs)   在分隔符fs为分隔符将字符串s分隔成一个awk数组a,并返回a的下表数tolower(str)   将字符串str的大写字母改为小写字母toupper(str)   将字符串str的小写字母改为大写字母

实例

awk '{if(index($1,".")<=10){print $0}}' file1 > file2
#output:00003.mb.vmod.cn
#对于file1中的每一行,对第一个参数$1找第一个‘.'的位置,如果小于等于10,则输出这一行hour1=`date -d "-1 hour" +%H`
hour2=`date -d "-2 hour" +%H`
grep -E "prefix-($hour1|$hour2)" file1 | awk '{print $NF}'
#输出匹配的最后一项awk '{if(length($1)>5){print $1}}' file1
#输出file1中第一列长度大于5的行的第一列
#如某行 hello! word! 则输出hello!awk -F '\t' '!a[$1]++' file1
#去重,因为awk是一行一行的处理,比用sort -u要方便快速消耗小
#-F指定了分隔符

sed

sed操作的是一个输入文件在内存的一个副本,对副本内容进行编辑活动,如果没有重定向到一个文件,会将文件修改的结果输出到屏幕。和awk一样,不会修改输入文件的内容。

sed从输入数据中读取一行,将之拷贝到一个编辑缓冲区,然后读命令行或脚本的第一条命令,并使用这些命令中指定的定位模式来确定是否编辑和如何编辑。 重复这个过程直至结束。

sed [选项] ‘sed_cmd’ input_file

选项:
-n 默认在讲下一行读入缓冲区前,自动输出缓冲区内容。
-e 如果在命令行调用多条sed_cmd,必须在每天sed_cmd前加’-e’选项

sed_cmd格式: ‘[address] sed_edit_cmd’
address sed的行定位模式,用于只是被编辑的行,省略时编辑所有行
sed_edit_cmd 对被编辑行将要进行的编辑操作

执行sed:
除了直接输入命令行;也可以将sed写入脚本,用sed -f filename 执行;或者直接写sed脚本以“#!/bin/sed -f”开头,通过脚本文件名执行

address定位:
x 行号
x,y 从第x行到第y行
/pattern/ 查询包含模式的行
x,y 查询不包含x和y的行

sed_edit_cmd
p 打印匹配行的行号
= 显示匹配行的行号
a\ 在指定行后附加新文本
i\ 在指定行前插入新文本
d 删除被指定的行
c\ 用新文本替换被定位文本行
s 用模式替换被定位行中的模式
r 从另外一个文件中读入文本附加到指定的行后,并显示读入的文本信息
w 写文本到一个文件

实例

sed 's/\.$//g'  删除已据点结尾的行
sed '/abcd/d'   删除包含abcd的行
sed '   */ /g'  删除多个空格,用一个空格代替
sed '/^$/d'     删除空行

linux命令小记(grep、awk、sed)相关推荐

  1. Linux命令:grep awk sed详解

    1.grep grep [options] regex [file...] regex 是指一个正则表达式 -i : 忽略大小写.不会区分大小写字符.也可用–ignore-case 来指定. -v : ...

  2. linux相关(find/grep/awk/sed/rpm)

    如何查找特定的文件: find :在指定目录下查找文件 find -name "filename" :从当前目录查找文件 find / -name "filename&q ...

  3. 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 ...

  4. Linux文本三剑客--grep、sed、awk

    Linux文本三剑客–grep.sed.awk 文章目录 Linux文本三剑客--grep.sed.awk 1.grep 1.1什么是grep 1.2使用grep 命令格式 命令参数 基本正则表表达式 ...

  5. cut\grep\awk\sed命令详解

    cut\grep\awk\sed命令详解 1.cut命令详解及实例 (1)作用:提取文件中指定的列 语法格式:cut  选项  文件名   (2)选项作用:      -d 分隔符     按照指定的 ...

  6. 五分钟入门文本处理三剑客grep awk sed

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:Spring Boot + Vue 如此强大?竟然可以开发基于 C/S 架构的应用个人原创+1博客:点击前往,查 ...

  7. awk处理带有空格的字符串_五分钟入门文本处理三剑客grep awk sed

    介绍 grep awk sed是Linux下文本处理常用的命令,能完成很多神奇的操作,今天就分享一下这三个命令最常见的用法 grep 使用一般有如下两种形式 第一种形式 grep [option] [ ...

  8. Linux命令之grep用法

    Linux命令之grep用法 Usage: grep [OPTION]- PATTERN [FILE]- 用法: grep [选项]-模式 [文件]. Search for PATTERN in ea ...

  9. Linux命令之 —— grep \ls \ ll \ sed \ bg fg \ ipset \ wc \ ifconfig \ awk

    0. grep命令 1. Linux ls  -ld 1 2. Linux 中ls -l // ll 命令详解  (7个字段):文件属性 1 3. shell中的if判断 4. Linux中 > ...

  10. linux命令 三大利器,awk、grep、sed是linux操作文本的三大利器,也是必须掌握的linux命令之一...

    awk.grep.sed是linux操作文本的三大利器,也是必须掌握的linux命令之一.三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂.grep更适合单纯的查找或匹配文 ...

最新文章

  1. 模拟内存计算如何解决边缘人工智能推理的功耗挑战
  2. C#编写一个抓网页的应用程序
  3. 计算机天才Aaron Swartz 名作 《如何提高效率》——纪念真正的“hacker!
  4. 毕设不会做,怎么办??
  5. 6G技术长啥样?5大趋势,13个核心技术2030年落地
  6. 顶象iOS安全编译器(iOS安全加固神器) ——内测活动开始啦!
  7. MapReduce框架Mapper和Reducer类源码分析
  8. OpenStack Neutron浅析(四)
  9. “References to generic type List should be parameterized”
  10. Java若_【JAVA基础】JAVA四种引用(强软若虚)
  11. 一年太久,研究员决定不等补丁直接披露 Safari 0day 详情
  12. ios view 切上部分圆角_IOS开发入门之给view添加圆角并指定位置
  13. JavaScript网页特效---对联广告,网站对联广告
  14. 虚拟机服务器断网,Vmware虚拟机断网不能上网的解决方法教程[多图]
  15. html怎么填充单元格颜色,PPT表格单元格怎么填充颜色 PPT填充表格单元格颜色的详细教程...
  16. Hack the box -- 靶机渗透测试(TIER2)
  17. JRuby: Wiki: RailsWithH2InJNDIOnJetty — Project Kenai
  18. 赴日java常问问题_赴日软件工程师java笔试题
  19. 金三银四:蚂蚁金服JAVA后端面试题及答案之二面
  20. 使用Matlab读取二进制数据文件

热门文章

  1. 渗透测试-Kali虚拟机技术
  2. pAdTy_1 构建图形和动画应用程序
  3. AMCL中odom的数据处理
  4. 【Python案例】Python实现垃圾分类APP(附带微信小程序)
  5. JavaScript打造很酷的图片放大效果实例代码
  6. 百度地图受邀参加第九届全国化工物流行业年会 助力危化品物流运输安全合规
  7. web前端面试总结(自认为还算全面哈哈哈哈哈!!!!)
  8. TLS Origination for Egress Traffic(0.8)
  9. 一个程序员购买保险之路-1(适用于所有人)
  10. 玖富曲线入股湖北消金,已成第二大股东