博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux命令之awk
阅读量:6295 次
发布时间:2019-06-22

本文共 1074 字,大约阅读时间需要 3 分钟。

awk中使用shell命令

awk '{cmd="rm "$0;system(cmd)}' filename.txt

awk 中输出双引号和单引号

awk '{print "\""}'awk '{print "'\''"}'

统计每行字符分割后特定字符出现的次数

awk -F "," '{if($(NF-1)=="2"){print $0}}' | wc -l

统计次数

awk -F "," ' BEGIN { count1=0;count2=0;count3=0} { if((NF-1)==1){count1+=1} else if((NF-1)==2){count2+=1} else{count3+=1} } END {print NR,count1,count2,count3} ' 20151120.txt

awk中取对应的列:取整行$0,取第一列$1,取最后一列$NF,取倒数第二列$(NF-1)


使用awk处理文件中上下关联的两行,例如文件
foo.txt有如下内容
abcportals: 192.168.5.41:3260defportals: 192.168.5.43:3260

如何把文件foo.txt内容变为如下内容

abc 192.168.5.41:3260def 192.168.5.43:3260

方法: awk '/port/{print a" "$2}{a=$1}' foo.txt

解释:

处理第一行的时候,以port开头吗?很明显,不以port开头,所以那个pattern不匹配,action不执行。但执行了后面的
a=$1
处理第二行的时候,以port开头,打印出来a和本行$2,再处理就是个循环过程。

由于第一行没有匹配以port开头的,所以print a" "$2不执行,执行a=$1, a=abc

由于第二行有匹配以port开头的,所以print a" "$2行执行,由于a=abc,所以输出 abc 192.168.5.41:3260
由于第三行没有匹配以port开头的,所以print a" "$2不执行,执行a=$1,a=def
由于第四行有匹配以port开头的,所以print a" "$2行执行,由于a=def,所以输出 def 192.168.5.43:3260

由此得到结果:

abc 192.168.5.41:3260def 192.168.5.43:3260


欢迎订阅「K叔区块链」 - 专注于区块链技术学习
博客地址:
简书主页:
segmentfault主页:
腾讯云主页:

转载地址:http://rsvta.baihongyu.com/

你可能感兴趣的文章
【持续更新】C++中string类使用总结
查看>>
霍夫变换概述和标准霍夫变换
查看>>
iOS 跳转App的二三事
查看>>
PhpStorm+Homestead+Xdebug调试Laravel
查看>>
Promise从入门到精通
查看>>
django 限制匿名用户访问以及重定向
查看>>
手把手教你实现一个 Vue 进度条组件!
查看>>
吃透这套架构演化图_从零搭建Web网站也不难!
查看>>
Java架构-(十) 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)
查看>>
Android热修复之 阿里开源的热补丁
查看>>
Spring Cloud-Honghu Cloud分布式微服务云系统(一)
查看>>
AI、5G时代到来,腾讯“社交+内容”的自我进化
查看>>
Webpack模块化原理简析
查看>>
高仿腾讯QQ Xplan(X计划)的H5页面(2):动画控制
查看>>
Weex控制Android返回键解决方案
查看>>
Laravel5.4重新登陆跳转到登陆前页面的原理和实现
查看>>
Chrome Full black Screen [Solved]
查看>>
Android动态权限管理模型(4.3-6.0)
查看>>
UI仿写 - 收藏集 - 掘金
查看>>
svg做自定义折线图表
查看>>