Linux三剑客之awk命令详解-程序员宅基地

技术标签: java  shell脚本  Linux  运维  shell  linux  服务器  

目录

一、awk常见用法

二、案例

        2.1、awk中-F的使用

        2.2、awk中几个特殊的内部变量

        用法:

 三、实战案例


一、awk常见用法

        通常情况下awk所使用的命令格式如下,其中,单引号家伙是那个大括号“{ }”用于设置对于数据进行的处理动作。awk可以直接处理目标文件,也可以通过“-f”读取脚本对目标文件进行处理。

awk 选项 '模式或条件{编辑指令}' 文件1 文件2  #过滤并输出文件中符合条件的内容

awk -f 脚本文件 文件1 文件2  #从脚本中调用编辑指令,过滤并输出内容

        它与sed命令有一些不同,sed常用于一整行的处理,二awk比较倾向于将一行分成多个“字段”然后再进行处理,awk命令的过程中,可用使用逻辑操作符“&&”表示“与”、“||”表示“或”、“!”表示“非”;还可以进行简单的数学运算。

二、案例

        2.1、awk中-F的使用

cat /etc/passwd | awk -F ".' "{print $1,$3,$4}''

#以":"为分隔符,输出1,3,4列内容

         awk 从输入文件或者标准输入中读入信息,与 sed 一样,信息的读入也是逐行读取的。 不同的是 awk 将文本文件中的一行视为一个记录,而将一行中的某一部分(列)作为记录 中的一个字段(域)。为了操作这些不同的字段,awk 借用 shell 中类似于位置变量的方法, 用$1、$2、$3…顺序地表示行(记录)中的不同字段。另外 awk 用$0 表示整个行(记录)。 不同的字段之间是通过指定的字符分隔。awk 默认的分隔符是空格。awk 允许在命令行中 用“-F 分隔符”的形式来指定分隔符。

        2.2、awk中几个特殊的内部变量

FS:指定每行文本的字段分隔符,默认为空格或制表位。 与-F一样
NF:当前处理的行的字段个数。 
NR:当前处理的行的行号(序数)。 
$0:当前处理的行的整行内容。 
$n:当前处理行的第 n 个字段(第 n 列)。 
FILENAME:被处理的文件名。
RS:数据记录分隔,默认为\n,即每行为一条记录。 

        用法:

cat /etc/passwd | awk '{print}'  #输出所有内容  或者  '{print $0}'

cat /etc/passwd | awk 'NR==1,NR==3{print}' #输出第1~3行内容 

cat /etc/passwd | awk '(NR<=3)$$(NR>=1){print}'

  

 cat /etc/passwd | awk 'NR==1||NR==3{print}' #输出1、3行的内容

nl /etc/passwd | awk '(NR%2)==1{print}'  #输出奇数行(为了更好的可视化,这里用nl)

 nl /etc/passwd | awk '(NR%2)==0{print}'   #输出偶数行

 三、实战案例

58.87.87.99 - - [09/Jun/2020:03:42:43 +0800] "POST /wp-cron.php?doing_wp_cron=1591645363.2316548824310302734375 HTTP/1.1" ""sendfileon
128.14.209.154 - - [09/Jun/2020:03:42:43 +0800] "GET / HTTP/1.1" ""sendfileon
64.90.40.100 - - [09/Jun/2020:03:43:11 +0800] "GET /wp-login.php HTTP/1.1"""sendfileo

要输出时间和IP

cat 1.txt  | awk -F"[ []" '{print$1,$5}'

awk -F: 'BEGIN{a=0};$3%2==0 && /\/sbin\/nologin/{print NR,$0} END{print a}' /etc/passwd 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_57377057/article/details/126254525

智能推荐

nginx和mysql分开_nginx+php-fpm+mysql分离部署详解-程序员宅基地

文章浏览阅读117次。相信大家将这三者部署到同一台主机应该已经不陌生了,今天在这里,给大家演示一下如何将三者部署到三台主机上。实验系统:CentOS 6.6_x86_64实验前提:大部分软件使用编译安装,请提前准备好编译环境,防火墙和selinux都关闭实验软件:nginx-1.9.3 mariadb-10.0.20 php-5.6.11 memcache-2.2.7 xcache-3.2.0实验拓扑:一、安装ngin..._php和nginx在一个服务器上mysql单独一台

2021我的第一个offer,字节跳动Android岗,附上我的面经分享_android入职offer-程序员宅基地

文章浏览阅读438次,点赞11次,收藏13次。摘要:开篇之前,首先说一下,博主曾经也只是尘世间一个迷途小开发,二流程序员。可能这篇文章并不像其他面经一样金光闪闪,只是一个二流Android攻城狮在市场的大潮之下,用一个月时间面试+复习+总结,最终在2020的年尾拿到了自己喜欢公司offer(字节跳动Android开发岗,薪资也涨了40%多,对我来说已经很满意了)的故事。出来社会摸爬滚打三年多,不得不承认人是分三六九等的。即便是专注度、努力这些颇为客观的因素,也是因人而异的。说下我的个人背景吧:双非本科,计算机专业。工作三年,都是小厂,小组最_android入职offer

服务端返回的路由信息如何添加到路由表或者路由器中_动态添加完路由怎么刷新到路由表里-程序员宅基地

文章浏览阅读286次。如果使用的是 Vue Router,需要在 addRoutes 完成后手动调用 router.addRoutes(routes) 来更新路由表。总之,将服务端返回的路由信息添加到路由表或者路由器中是一个比较通用的场景,在具体实现时需要根据自己的业务需求进行定制化开发。在客户端代码中,使用路由器的 addRoutes 方法将新解析出来的路由表添加到已有的路由表中。当用户访问新增加的路由时,Vue Router 会按照路由表中的配置进行路由匹配和跳转。_动态添加完路由怎么刷新到路由表里

dd命令详解-程序员宅基地

文章浏览阅读8.4k次,点赞12次,收藏66次。一、dd命令介绍dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2参数注释:if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。obs_dd命令

linux虚拟机安装过程中卡在mount: block device /dev/sr0 is write-protected, mounting read-only_vmware16 安装centos7 mount:/dev/sr0 is write-protect-程序员宅基地

文章浏览阅读1w次。安装linux虚拟机过程中卡在了mount: block device /dev/sr0 is write-protected, mounting read-only不继续执行;解决办法:在新建虚拟机的时候,选择稍后安装操作系统 安装完成后,再在编辑虚拟机设置中选择iso文件_vmware16 安装centos7 mount:/dev/sr0 is write-protected, mounting read-only

面试题:synchronized与Lock的区别_synchronized和lock锁的区别 面试-程序员宅基地

文章浏览阅读284次。面试题:synchronized与Lock的区别synchronized是关键字,而Lock是一个接口。synchronized会自动释放锁,而Lock必须手动释放锁。synchronized是不可中断的,Lock可以中断也可以不中断。通过Lock可以知道线程有没有拿到锁,而synchronized不能。synchronized能锁住方法和代码块,而Lock只能锁住代码块。Lock可以使用读锁提高多线程读效率。synchronized是非公平锁,ReentrantLock可以控制是否是公平锁_synchronized和lock锁的区别 面试

随便推点

iOS Collectionview滚动到指定项_ios collectionview滑动到指定位置-程序员宅基地

文章浏览阅读1.6k次。cvUserInfo.ScrollToItem(Foundation.NSIndexPath.FromRowSection(index,0),UICollectionViewScrollPosition.CenteredHorizontally,false);_ios collectionview滑动到指定位置

RFID固定资产管理系统的背景和性能特点_资产管理系统建设背景-程序员宅基地

文章浏览阅读719次。  为适应智能化的办公要求,RFID固定资产管理系统应运而生,帮助企业、学校、行政单位等,实现轻松管理固定资产。下面,小编给大家介绍一下RFID固定资产管理系统的背景和性能。RFID固定资产管理系统的背景和性能特点  RFID固定资产管理系统的背景:  1、资产折旧数据不准确,不能准确反映企业的经营成果和业绩。  2、帐面价值统计不准确,导致资产流失。  3、资产挪用情况严重,缺乏管理办法。  4、资产的使用地点分散不明,使盘点工作异常繁重,耗时耗力。  RFID固定资产管理系_资产管理系统建设背景

Elecron-vue实战(二)— 请求Mock模拟数据渲染页面_vue2mock数据二级如何渲染-程序员宅基地

文章浏览阅读806次。一、环境搭建1、安装Mock.js如果仅仅用作脱离后台的模拟数据,就安装在开发环境中:npm install mockjs -D2、安装axios-mock-adapteraxios-mock-adapter是一款axios的请求模拟调试器,可以使用它来实现请求拦截并模拟后台回复。npm install axios-mock-adapter -D二、使用(1)建立文件在src..._vue2mock数据二级如何渲染

python最强脚本工具_5款非常棒的Python工具-程序员宅基地

文章浏览阅读181次。工欲善其事必先利其器,一个好的工具能让起到事半功倍的效果,Python社区提供了足够多的优秀工具来帮助开发者更方便的实现某些想法,下面这几个工具给我的工作也带来了很多便利,推荐给追求美好事物的你。Python TutorPython Tutor 是由 Philip Guo 开发的一个免费教育工具,可帮助学生攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。通过这个工具,教师或..._python 最强工具

teprunner测试平台10篇原创PDF教程发布-程序员宅基地

文章浏览阅读296次。001-pytest内核测试平台落地初体验本文介绍了我第一次做的测试平台的使用和原理,技术栈为Vue+Django+Django REST Framework+JWT+MySQL+pyte..._teprunner平台j介绍

王道之数据结构顺序表1.从顺序表中删除具有最小值的元素_王道从顺序表中删除具有最小值的元素(假设唯一)-程序员宅基地

文章浏览阅读3.7w次,点赞3次,收藏17次。题目要求:从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删除的元素的值。空出的位置由最后一个元素填补,若顺序表为空则显示错误信息并退出/*从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删除的元素的值。空出的位置由最后一个元素填补,若顺序表为空则显示错误信息并退出*/#include <iostream>#include <cstring>..._王道从顺序表中删除具有最小值的元素(假设唯一)