正则表达式AWK

Awk

-f :指定分隔符,默认是空格,多个连续的空格自动压缩成一个

-v:变量赋值

内置变量:

NR:表示行号

FS:列分隔符和F作用一致,如果硬FS,FS=”.”

OFS:输出内容的列分隔符

NF:最后一个字段

$n:内置变量

Awk格式 :第一种 : awk  ’ 指定条件 {处理动作} ’ 

           第二种 : awk  ‘ BEGIN{X=1}{xx==}END {处理动作}’

第一行到第三

Awk必须要会的按行取列

Awk标准用法 ,也是必须要会的

取第二列与最后一列

这里的NF 为最后一列

Awk的精准筛选

$n  ( > < == ):进行数值对比

$n~  ”字符串” :代表这个字段包含某个字符串

$n!~  “字符串” :取反代表这个字段不包含某个字符串

$n==  “字符串” :代表这个字段要和字符串相同

$n!=  “字符串 ”:取反,不为某个字段

$NF: 代表最后一个字段

练习

  1. /etc/passwd

输出最后一个字段中包含bash所在行的第一个字段和最后一个字段

  1. /etc/passwd

只有第一列是root的行,才打印祂的第六列

输出最后一个字段,不包含bash,然后打印第一列和第六列

指定第六个字段为/home/dn(自定义)而且最后一个字段为/bin/bash.满足条件的输出第一列,和最后一列

打印第三列所有大于500的,然后输出全部内容,/etc/passwd

第二种方式

条件判断打印

If语句

面试题

Awk的三元表达式 :继承了java,格式和java也一样

Awk ‘ {条件表达式1?A表达式或者值:B表达式或者值} ’ 文件名

?:

if  else

if [ $3>=$4 ]

then

echo "$3"

else

echo "$4"

fi

根据文本内容匹配过滤打印

以root为开头,以bash为结尾

面试题

取出www和mail

第一种

第二种

Awk中的getline函数: getline 和管道符以及重定向符号在一块的时候,

重定向: < > 把其中一个文件的内容传给另外一个

| : 输出指定内容,打印结果

getline 函数运行之后会改变awk的内置变量,读取的行数也就发生变化,getline在前,就是跳过1  2 ,getline 在后,变量就会变成,从第一行开始,跳过第二行,打印的就是奇数

重定向

管道符

-v :

Awk  begin模式

Awk和数组结合使用

Awk中如何定义数组

遍历

索引下标的值是唯一的

Awk按行取列 awk -F: ‘{print $1 ,$3}’  /etc/passwd

Awk 的运算格式 :awk ‘ BEGIN {print 2^3或者2**3} ’

Awk 的精准筛选:

Awk -v的赋值变量 :awk -v a=”$a”  ,在awk当中,打印变量不需要加$

Awk 的按行 行号范围区间打印

Awk 的文本内容过滤:awk ‘/root/{print}’ /etc/passwd

getline方法了解即可

示例

  1. 日志分割 时间及主机名取出来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值