awk命令应用

news2024/11/25 7:36:17

记录:353

场景:在CentOS 7.9操作系统上,使用awk文本处理工具处理文本;使用awk、cat和grep搭配使用处理文本;使用awk直接处理文本;使用shell脚本调用awk脚本处理文本。

版本:

操作系统:CentOS 7.9

名词:

awk:一个优良的文本处理工具,Linux及Unix环境中功能最强大的数据处理引擎之一。

awk: 一种编程语言,用于在 linux/unix 下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。

1.命令应用

1.1awk处理第1个文本(默认空格分割)

(1)命令

命令:cat /home/work/aintro.txt | grep -vE "#|^$"| awk '{print $1,$2,$3,$4}'

(2)解析

使用cat命令读取文件内容。

使用grep命令匹配内容,grep -vE "#|^$",是表示匹配不是以#号开头的字符串。-v,是反向匹配;-E是扩展正则表达式;"#|^$",正则表达式是匹配以#号开头的字符串;"#"是以#号开头的字符串,"^"是匹配字符串开头,"$"是匹配字符串结尾。'{print $1,$2,$3,$4}'中的两个单引号是引用代码块。print是输出。

使用awk逐行处理文本,默认使用空格分割字符串。"$1,$2,$3,$4"中$1是代表取分割后第1个字符,$2是取分割后第2个字符,逐级类推。如果是$0就打印出整行内容。

(3)文本内容和文本处理结果

1.2awk处理第2个文本(-F指定分割符号)

(1)命令

命令:cat /home/work/bintro.txt | grep -vE "#|^$"| awk -F":" '{print $1,$2,$3,$4}'

命令:cat /home/work/bintro.txt | grep -vE "#|^$"| awk -F: '{print $1,$2,$3,$4}'

(2)解析

使用cat命令读取文件内容。

使用grep命令匹配内容。

使用awk逐行处理文本,-F":"或-F:,指定文本的分割符号为":"号。

(3)文本内容和文本处理结果

1.3awk处理第3个文本

(1)命令

命令:awk -F":" '{print $1,$2,$3,$4}'  /home/work/cintro.txt

命令:awk -F: '{print $1,$2,$3,$4}'  /home/work/cintro.txt

(2)解析

使用awk逐行处理文本,-F":"或-F:,指定文本的分割符号为":"号。

(3)文本内容和文本处理结果

1.4awk处理第4个文本

(1)命令

命令:awk -F: '{print $1,$2,$3,$4}' /home/work/dintro.txt >>/home/work/dintro-result.txt

(2)解析

使用awk逐行处理文本,-F:,指定文本的分割符号为":"号。处理/home/work/dintro.txt文件内容;结果输出到/home/work/dintro-result.txt文件。

(3)文本内容和文本处理结果

1.5awk处理第5个文本

(1)命令

命令:awk -f /home/work/process.awk /home/work/eintro.txt >>/home/work/eintro-result.txt

(2)解析

使用awk逐行处理文本,-F:,指定文本的分割符号为":"号。

-f /home/work/process.awk,-f指定使用process.awk文件的脚本。

处理/home/work/eintro.txt文件内容;结果输出到/home/work/eintro-result.txt文件。

(3)文本内容和文本处理结果

1.6awk处理第6个文本

(1)命令

执行shell命令:/home/work/process.sh

(2)解析

脚本调用逻辑:

执行shell脚本/home/work/process.sh;

shell脚本调用/home/work/process.awk脚本;

awk -f处理/home/work/fintro.txt文件内容;

>>将处理结果输出到/home/work/fintro-result.txt文件。

(3)文本内容和文本处理结果

图片版:

文字版:

//1. fintro.txt文本
Zhejiang:is:a:province:in:China.
Hangzhou:is:a:city:in:Zj.
Xihu:is:a:district:in:Hz.

//2. process.awk脚本
BEGIN{
FS=":"
}
{print $1,$2,$3,$4}

// 3. process.sh脚本
#!/bin/bash
SRC_FILE=/home/work/fintro.txt
RESULT_FILE=/home/work/fintro-result.txt
AWK_SCRIPT_FILE=/home/work/process.awk
awk -f $AWK_SCRIPT_FILE $SRC_FILE >> $RESULT_FILE

// 4. fintro-result.txt处理结果文本
Zhejiang is a province
Hangzhou is a city
Xihu is a district

2.命令帮助手册

命令:awk --help

解析:查看awk支持的全部命令和选项,在实际工作中,查看这个手册应该是必备之选。

Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options:		GNU long options: (standard)
	-f progfile		--file=progfile
	-F fs			--field-separator=fs
	-v var=val		--assign=var=val
Short options:		GNU long options: (extensions)
	-b			--characters-as-bytes
	-c			--traditional
	-C			--copyright
	-d[file]		--dump-variables[=file]
	-e 'program-text'	--source='program-text'
	-E file			--exec=file
	-g			--gen-pot
	-h			--help
	-L [fatal]		--lint[=fatal]
	-n			--non-decimal-data
	-N			--use-lc-numeric
	-O			--optimize
	-p[file]		--profile[=file]
	-P			--posix
	-r			--re-interval
	-S			--sandbox
	-t			--lint-old
	-V			--version

To report bugs, see node `Bugs' in `gawk.info', which is
section `Reporting Problems and Bugs' in the printed version.

gawk is a pattern scanning and processing language.
By default it reads standard input and writes standard output.

Examples:
	gawk '{ sum += $1 }; END { print sum }' file
	gawk -F: '{ print $1 }' /etc/passwd

以上,感谢。

2022年11月29日

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/47088.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于神经网络彩色图像插值研究-附Matlab程序

⭕⭕ 目 录 ⭕⭕✳️ 一、引言✳️ 二、色彩过滤阵列CFA✳️ 三、BP网络结构✳️ 四、神经网络彩色图像插值实验验证✳️ 五、参考文献✳️ 六、Matlab程序获取与验证✳️ 一、引言 彩色图像插值是通过估算相邻像素来估计缺失的颜色分量的过程,数字相机通过色彩过滤…

若依对SpringSecurity框架的运用

引言:借助ruoyi-vue框架学习其对SpringSecurity框架的运用。若依的前后端分离版本基于SpringSecurity和JWT配合Redis来做用户状态记录. 1 SpringSecurity 1.1 入口 后台接收登录数据,基于用户名和密码封装一个(UsernamePasswordAuthenticationToken)认…

线程安全和synchronized关键字

一,线程安全的引入 1.示例 多线程在多进程的基础上更好解决了并发问题,但由于一个进程内的多个线程是资源共享的,就会出现多个线程在并发执行的时候造成内存中数据的混乱。 举一个例子: class Counter {public int count;publi…

hypervision理解的记录

目录 一、hypervision介绍 Type 1 Hypervisor Type 2 Hypervisor 二、QNX hypervision是TYPE1的虚拟机 三、QNX hypervision架构 1、VMM (虚拟机管理器) 2、virtual-net 3、qnx官网 network 九、其他 一、hypervision介绍 首先,hypervision分为Type1和Type2…

SpringBoot添加外部jar包及打包(亲测有效) - 第452篇

历史文章(文章累计450) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 深入Feign源码吃透Spring扩展点「扩展点…

亿级异构任务调度框架设计与实践

背景 阿里云日志服务作为云原生可观测与分析平台。提供了一站式的数据采集、加工、查询分析、可视化、告警、消费与投递等功能。全面提升用户的研发、运维、运营、安全场景的数字化能力。 日志服务平台作为可观测性平台提供了数据导入、数据加工、聚集加工、告警、智能巡检、…

“200万天价床垫”引发的思考:普通床垫越卖越贵是推测还是事实

定制床垫价格高达200万元?近段时间,一场娱乐圈的闹剧让大家把目光转向了床垫市场。在天价床垫的话题下,除了大部分猜测床垫品牌的讨论以外,也有不少人认为指出了“社会现状”:健康品质化的消费追求正在让市面上的床垫价…

Python_数据容器_字典

一、字典(映射)的定义 生活中的字典: 【字】:【含义】 可以按【字】找出对应的【含义】 Python中的字典: key : value 可以按照[key]找出对应的[value] 1、Python字典使用场景: 通过使用字典&#…

uni-app 之 web-view 与h5 通讯

官网文档:https://uniapp.dcloud.net.cn/component/web-view.html#getenv web-view 是一个 web 浏览器组件,可以用来承载网页的容器,会自动铺满整个页面(nvue 使用需要手动指定宽高)。 各小程序平台,web-v…

图像下采样再上采样维度不匹配

图像在下采样后再上采样,维度会发生不匹配,假设一幅图像的维度为(b,c,h,w),那么当h和w是偶数的时候,下采样和上采样是匹配的,当且仅当他是偶数的时候才匹配,然而图像的h和w往往不一定是偶数。当然有许多种方…

【Shell 脚本速成】06、Shell 数组详解

目录 一、数组介绍 二、数组定义 三、数组赋值方式 四、数组取值 案例演示 五、关联数组 5.1 定义管理数组 5.2 关联数组赋值 5.3 管理数组取值 5.4 综合案例 有这样一个现实问题:一个班级学员信息系统,要求存储学员ID、NAME、SCORE、AGE、GE…

关于订单功能的处理和分析

这两天看了一下RABC的权限管理处理,梳理了一下订单功能的表创建,界面,功能分析。 目录 RABC RBAC0模型 那么对于RABC模型我们怎么创建数据库表? 订单模块的梳理 RABC RABC说的是在用户和权限之间多一个角色,用户与…

软件测试基础

⭐️前言⭐️ 🍉博客主页: 🍁【如风暖阳】🍁 🍉精品Java专栏【JavaSE】、【备战蓝桥】、【JavaEE初阶】、【MySQL】、【数据结构】 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟&…

Spring Cloud OpenFeign - - - >拦截器

源码地址:https://download.csdn.net/download/weixin_42950079/87209379 SpringMVC拦截器 和 OpenFeign拦截器 的区别 初学者很容易将 Spring MVC 拦截器 和 Spring Cloud OpenFeign 拦截器搞混,误以为OpenFeign拦截器就是SpringMVC拦截器: …

虹科分享 | 麦氏比浊仪在药敏试验中的应用

细菌是重要的病原微生物,人类针对不同的病原菌研发了各类抗菌药,这些药物对细菌性疾病的治疗与控制起到了关键作用。然而随着新型致病菌的不断出现,加上细菌在药物使用过程中逐渐产生了耐药性,抗菌药的防治效果越来越差。病原菌对…

Python 中的类与继承

类的定义以及实例的建立 Python中,类通过 class 关键字定义。 例如最简单的一个类定义可以为: class Person(object):pass Python 的编程习惯,类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的。…

解决单文件组件里的跨域请求数据问题(使用vue单文件组件请求数据必会遇到的问题!!!)

为什么要解决跨域问题: 因为浏览器有限制,只有同域名同端口号下的数据才能拿来用;那如果想拿到不同域名不同端口号下的数据就不行了; 在单文件组件中如何去解决跨域问题: 因为服务器没有跨域限制,只有浏览…

PyTorch(四)Torchvision 与 Transforms

文章目录Log一、Torchvision1. CIFAR10① 介绍② 使用2. 与 Transforms 结合使用总结Log 2022.11.28接着开启新的一章2022.11.29继续学习 一、Torchvision 视频教程中 Torchvision v0.9.0文档Torchvision 官方文档Torchvision Datasets API 文档 1. CIFAR10 ① 介绍 CIFAR…

HBuilder X实现banner轮播图

第一步还是去仔细阅读官方文档,找到组件下面的内置组件里面的swiper,如图所示 官方是提供了一个用来制作轮播图的滑块视图容器:swiper 一般来说,轮播图的图片地址是由后端返回给前端遍历显示在页面上的,所以基本的结构…

世界杯的“中国元素”昂扬大国担当,点面科技全新推出的多模态多功能移动终端踏上卡塔尔征途!

本次世界杯中国足球队没有参加,但是在世界杯的赛场上到处都有中国元素。 中国承建的卢赛尔体育场 卡塔尔世界杯主体育场——卢赛尔球场由中国铁建以总承包身份承建,引发了全球瞩目。在本届世界杯赛事中,该场馆将承担包括决赛在内的10场比赛&…