grep awk用法

1、grep 常用用法总结

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

grep常用的用法

格式 grep [-acinv] [–color=auto] ‘搜索字符串’ filename
选项和参数:

  • -a 将二进制文件以文本方式搜索数据
  • -c 计算找到 ”搜寻字符串“ 的次数
  • -i 忽略大小写
  • -n 顺便输出行号
  • -v 反向选择,显示没有 ”搜寻字符串“ 内容的那一行
  • –color=auto 可以将找到的关键词部分加上颜色的显示。
  1. grep windos /etc/passwd
    显示passwd文件中包含windos内容的行
  2. grep -n windos /etc/passwd
    显示passwd文件中包含windos内容的行,同时显示行号
  3. grep -n ‘t[ae]st’ data.txt
    正则表达式的配合使用:如果我想要搜寻 test 或 taste 这两个单字时,可以发现到,其实她们有共通的 ‘t?st’ 存在~这个时候,用t[ae]st匹配,及需要搜索[tast] [test]两个字符串。
  4. grep -n ‘[^a-z]oo’ data.txt
    正则匹配显示oo前面不包含小写字母的所有内容,同时显示行
    例如 3:Football game
  5. grep -n ‘1’ data.txt
    正则匹配显示一小写字母开头的内容
  6. grep -n ‘[a-zA-Z]’ data.txt
    正则匹配显示不以小写字母或者大写字母(不以英文字母)开头的文本,同时显示行号。
  7. grep -n ‘.$’ data.txt
    显示data 文件中行尾为小数点的那一行,同时显示行号。
  8. grep -n '^$ data.txt
    显示只有行首行尾,也就是显示空白行,同时显示行号

awk 常用用法总结

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

  • 使用方法

    格式:awk ‘{pattern + action}’ {filenames}

    其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。 pattern就是要表示的正则表达式,用斜杠括起来。

  • 调用方式

  1. 命令行方式

awk [-F field-separator] ‘commands’ input-file(s)

commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。
在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。

  1. shell脚本方式

    类似#!/bin/sh ===> #!bin/awk

  2. 将所有的awk命令插入一个单独的文件

  • awk的内置变量
变量名称功能
ARGC命令行参数个数
ARGV命令行参数排列
ENVIRON支持队列中系统环境变量的使用
FILENAMEawk浏览的文件名
FNR浏览文件的记录数
FS设置输入域分隔符,等价于命令行
NF浏览记录的域的个数
NR已读的记录数
OFS输出域分隔符
ORS输出记录分割符
RS控制记录分割符
  • 举一反三
  1. cat /etc/passwd | awk -F ‘:’ ‘{print $1}’

表示以:分割passwd文件每行内容,显示第一列

  1. cat /etc/passwd | awk -F ‘:’ ‘{print $1"\t"$7}’

表示以: 分割passwd文件每行内容,同时显示第一列和第7列,两列之间用tab键分割。

  1. cat /etc/passwd |awk -F ‘:’ ‘BEGIN {print “name1,shell1”} {print $1","$7} END {print “red,/bin/bash”}’
    表示先执行BEGIN命令,然后读取文件,读入有/n 换行符的一条记录,然后根据记录按: 分割符划分该行,$0表示所有域,$1表示第一个域(列),读完所有的行,分割后,执行END操作,追加打印”red,/bin/bash“。
  2. awk -F ‘:’ ‘/windos/’ /etc/passwd

模式匹配方式,在passwd文件中查找windos关键字所有的行。

  1. awk -F: ‘/root/{print $7}’ /etc/passwd

模式匹配方式,在passwd文件中查找root关键字所在的行同时显示第7个域(列)

  1. #awk -F ‘:’ ‘{print “filename:” FILENAME “,linenumber:” NR “,columns:” NF “,linecontent:”$0}’ /etc/passwd

统计/etc/passwd 格式: 文件名,每行的行号,每行的列数。

  1. awk -F ‘:’ ‘{printf(“filename:%10s,linenumber:%s,columns:%s,linecontent:%s\n”,FILENAME,NR,NF,$0)}’ /etc/passwd

效果同上。


  1. a-z ↩︎

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值