正则表达式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
    评论
引用\[2\]:在awk中,可以使用正则表达式来匹配和处理文本。正则表达式可以用于模式匹配、替换和提取文本等操作。可以在awk命令中直接使用正则表达式,也可以将正则表达式写入一个文件中,然后通过-f选项加载该文件。使用正则表达式时,可以使用一些特殊字符和元字符来表示不同的模式。例如,使用"."表示匹配任意字符,使用"*"表示匹配前一个字符的零个或多个实例,使用"\[\]"表示匹配括号内的任意一个字符等等。通过结合正则表达式awk的其他功能,可以实现更加灵活和强大的文本处理操作。 问题:awk正则表达式能和-f选项一起使用吗? 回答: 是的,awk正则表达式可以和-f选项一起使用。通过-f选项加载一个包含正则表达式的文件,可以在awk命令中使用该文件中定义的正则表达式进行模式匹配、替换和提取文本等操作。这样可以使awk命令更加灵活和可维护。例如,可以将一组复杂的正则表达式写入一个文件,然后通过-f选项加载该文件,使得awk命令更加清晰和易于理解。 #### 引用[.reference_title] - *1* [正则表达式awk工具用法](https://blog.csdn.net/weixin_45409403/article/details/102545317)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [9.正则表达式--awk](https://blog.csdn.net/honey_wx/article/details/120297795)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值