shell学习 - awk入门

Shell入门基础学习笔记 1.基本语法(1)定义变量:变量=值(2)撤销变量:unset 变量(3)声明静态变量:readonly变量,注意:不能unset2.变量定义规则(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。2)等号两侧不能有空格(3)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。(4)变量的值如果有空格,需要使用双引号或单引号括起来。3.案例实操(1)定义变量A5(2)给变量A重新赋值8(3)撤销变量A(4)声明静态的变量B=2,不能unset。 阅读详情

一. awk应用场景

格式化数据或从一个大的文本文件中抽取记录

二. 使用方法

  1. 命令行方式
    $awk [-F field-separator] ‘commands’ input-file(s)
    commands是真正的awk命令
    [-F域分割符]是可选的,如果无-F选项,awk默认用空格作为分隔符,如果域分隔符不为空格,比如要浏览以”:”作为分隔符的password文件则必须指明-F选项,如:
    awk -F: ‘commands’ input-file

  2. awk脚本文件
    将1中的命令行写入一个文件,用bash或sh去解释它,执行命令为shawkscriptfile或./awk_script_file, 后者需要给脚本文件加执行权限。

  3. 将所有awk命令写入一个文件awk_script_file,用$awk -f awk_script_file input-file(s),例如,

#record.txt
zhangsan 21 M Hubei
lisi     30 F Beijing
wangwu   34 M Anhui
wangmazi 50 M Sichuang
lilei    20 M Hubei

#awk_script_file
$2 > 30 {print $0}

$awk -f awk.sh record.txt
wangwu   34 M Anhui
wangmazi 50 M Sichuang

三. awk脚本组成

awk语句都是由模式和动作组成。

模式即动作的执行条件,可以是条件语句或正则表达式,模式包括2个特殊字段BEGIN和END。使用BEGIN语句设置计数和打印头。BEGIN语句在文本浏览之前执行。END语句用来在awk完成文本浏览动作后打印出文本总数和结尾状态。

动作大多数用来打印,在{}内指明,可以包含if和循环等,如果不指明动作awk将打印出所有浏览出来的记录。

域和记录
域即用分隔符分割的字段,用$1,$2,$3...,$n表示第一个、第二个、第三个,第n个字段, $0表示所有字段。

保存awk输出

$awk '$2 > 30 {print $1, $2}' record.txt > tmp.txt

动作中的正则表达式
动作中的正则表达式用表示方式为:/这则表达式/,域号匹配正则表达式用~后紧跟正则表达式,也可以用if()。例如,打印名字中包含“zhangsan”的所有记录,

$ awk '{if ($1~/zhangsan/)print $0}' record.txt

或

$ awk '$1~/zhangsan/' record.txt
#默认打印所有满足条件的字段

条件运算中常用的运算符和正则式

+, -, *, /, %, +=, -=, %=, ^=
++, --
~模糊匹配,即**包含**
!~不匹配
==精确匹配 
>, <, >=, <=, !=
||, &&

正则表达式列举

[Gg]reen或(Green|green) 匹配Green或green
^...a 行首前三个字符任意,第四个是a

打印报告头和报告尾

awk 'BEGIN{print "Name    Age\n-------------------------"} $2>30 && $3 == "M" {print $1, $2} END {print "end-of-report"}' record.txt

awk内置变量

AGRC          命令行参数个数
ARGV          命令行参数列表
ENVIRON       系统环境变量
FNR           浏览文件的记录数
FILENAME      浏览文件名
FS            域名分隔符,等价于-F选项
NF            浏览记录域个数
NR            已读记录数
OFS           输出域分隔符
ORS           输出记录分隔符
RS            控制记录分隔符

awk内置字符串函数

gsub(r, s)        在整个$0中用s替代r
gsub(r, s, t)     在整个t中用s替代r
index(s, t)       返回s中字符串t的第一个位置
length(s)         返回s长度
match(s, r)       测试s是否包含匹配的r字符串
split(s, a, fs)   用fs把s分割成序列a
sprintf(fmt, exp) 返回经fmt格式化的串
substr(s, p)      返回字符串s中从p开始的部分
substr(s, p, n)   返回字符串s中从p开始长度为n的部分

awk变量
变量提高了awk程序可读性,下面是变量使用的简单例子

awk '{name=$1;age=$2;sex=$3;if(age>30 && sex=="M")print "Name:" name " Age:" age}' record.txt 

修改数值域的值

#将姓名为"lilei"的年龄增加1,然后打印出所有记录
awk '{if ($1=="lilei") $2+=1;print "Name:"$1 " Age:"$2}' record.txt 
#将姓名为"lilei"的姓名修改为"Lilei",打印出修改后的记录
awk '$1=="lilei" {$1="Lilei";print "Name:"$1 " Age:"$2}' record.txt 

统计

awk '{(tot += $2)};END{print "Total age:" tot}' record.txt 

本文只是简单的介绍了awk的基本语法,阅读本文后可以用awk完成简单的文本处理功能,awk博大精深,如果要深入学习建议阅读更专业的awk文档和相关书籍。

sed和awk的必备书籍 包括: 1. sed与awk+第三版(中文高清晰),内容非常全面详细,看了觉得很不错,学习sed和awk的必备书籍。 2. Effective awk Programming, 4th Edition 3. Sed与awk第二版(高清版).pdf 立即下载

相关推荐

ANSYS 2022R2 安装教程:系统准备、许可证配置与故障排查

ANSYS 是面向工程仿真的多物理场商业软件平台,其安装远非普通应用软件的图形化向导流程,而涉及操作系统版本、运行库精确版本、硬件虚拟化支持、许可证服务架构等系统级配置。理解 ANSYS License Manager 的服务机制与端口依赖、掌握 Visual C++ 和 .NET Framework 的启用逻辑,是保障 Fluent、Mechanical、HFSS 等求解器稳定调用的基础。该技术栈广泛应用于高校教学、航空航天结构分析、电子设备电磁兼容仿真等场景。本指南聚焦 ANSYS 2022R2 版本在

weixin_28559803的博客 597

值得一看的书之《sed&awk(第2版)》

想学习高级sed和awk可以去看看,收益匪浅。--2016年11月19日看完《sed&awk(第2版)》下载链接:http://down.51cto.com/data/2264410(需要一个下载豆) 转载于:https://blog.51cto...

weixin_34400525的博客 571

Zynq7000混合启动方案:QSPI Flash引导与eMMC ext4文件系统部署实战

本文详细介绍了Zynq7000平台的混合启动方案,结合QSPI Flash引导与eMMC ext4文件系统部署,解决嵌入式Linux系统启动可靠性与大容量存储需求。通过硬件连接配置、分区规划、Petalinux工程配置及实战部署步骤,帮助开发者高效实现系统优化,提升启动速度和文件系统性能。

weixin_29190169的博客 447

awk学习资料分享

之所以开始学习shell编程,学习linux命令都是从awk开始,它给予了太多美好的感觉以及回忆(虽然目前还只是一个入门级别的选手); awk看似一个命令(听起来很酷,像AK47一样),但他其实就是一门编程语言(和C风格很像),下面我就列举一下,我学习过程中比较好的资料: [b]1.(附件可下载)[/b] 这本书真的很不错,看它的时候仿佛又回到了大学时代看是的那种激动,虽然我只看...

积累点滴,成就梦想 201

WinIDEA基于IC5000烧录代码和调试教程

winIDEA就是ic5000用来烧录代码和调试代码的上位机,本文旨在介绍其如何去烧录代码并且调试

m0_56208280的博客 4161

零基础教程:用Python给试卷照片自动切题(有道OCR+PIL完整流程)

本文为零基础用户提供了一套完整的Python自动化切题方案。通过调用有道OCR API识别试卷照片中的题目坐标,并利用PIL库进行精准裁剪,将杂乱的试卷图片自动分割为独立的题目图像。教程详细涵盖了环境搭建、图像预处理、API调用、坐标解析与批量处理全流程,帮助教育工作者和技术爱好者高效处理大量试卷,实现工作流程自动化。

grpc6streamer的博客 1173

awk学习指引手册

1. 前言(本文转自http://doc.linuxpk.com/58431.html) 有关本手册 : 这是一本awk学习指引, 其重点着重于 : l awk 适于解决哪些问题 ? l awk 常见的解题模式为何 ? 为使读者快速掌握awk解题的模式及特性, 本手册系由一些较具代表性的范例及其题解所构成; 各范例由浅入深, 彼...

weixin_33851604的博客 398

Python 领域 vllm 知识蒸馏的实践经验

知识蒸馏(Knowledge Distillation)是一种将大型、复杂模型(教师模型)的知识转移到小型、高效模型(学生模型)的技术。在大型语言模型(LLM)时代,这项技术变得尤为重要,因为它可以在保持模型性能的同时显著降低计算资源需求。本文专注于在Python生态中使用vLLM(Very Large Language Model)框架实现知识蒸馏的实践经验。vLLM是一个专为大型语言模型设计的高效推理和服务框架,它通过创新的注意力机制和内存管理技术,显著提高了LLM的推理速度。

AI Python 编程之道的博客 777

linux shell 脚本攻略学习20--awk命令入门详解

awk生于1977年,创始人有三个,分别为 Alfred Aho,Peter Weinberger, 和 Brian Kernighan,名称源于三个创始人的姓的首字母。 作用:处理文本文件。 awk的特色是可以对行和列进行操作,输入man awk可以查看awk手册,下面将主要以例子来学习awk语言。 语法: mawk [-W option] [-F value] [-v var=va...

weixin_34376562的博客 213

基于SpringBoot 3 + Vue 3的全栈民宿预约管理系统设计与实现

文章将详细阐述系统的需求分析、架构设计、数据库设计、核心功能模块的实现(包括用户认证、房源管理、订单流程、支付集成等),并提供关键代码片段,最后对系统进行总结与展望。.requestMatchers("/api/admin/**").hasRole("ADMIN") // 管理员接口。.requestMatchers("/api/auth/**").permitAll() // 认证接口公开。.requestMatchers("/api/public/**").permitAll() // 公开资源。

2201_76125393的博客 272

为什么我的 Spark Executor / Yarn Container 只有一个vCore?

在很多集群里,在关闭了Spark的DynamicAllocation的前提下(避免自动申请空闲资源,干扰测试结果),都会观察到:提交Spark作业时,申请 1 个 driver + n 个 executor 会在Yarn上会对应创建 n+1 个 container,但是每个container只有一个vCore,通过--driver-cores和--executor-cores设定的vCore数都未奏效。有人会因此错误的认为Yarn上的一个vCore对应一个Spark的executor,这是非常错误的,正确的

Laurence的技术博客 916

shell入门学习笔记-15-命令详解: 三剑客之一awk-实例分析

系列目录与参考文献传送门: shell入门学习笔记-序章 awk 实例分析 1.分析日志 日志格式: {data} {time} {log_level} {thread_id} {code_line_at_class} - http_{url}_request_请求耗时={use_time} {result} others 统计各url的请求次数 [root@103-32-150-sh-100...

韩超的博客 (hanchao5272) 772

Python 实战:爬取高德地图交通数据(路况拥堵指数分析)

高德地图是由高德软件有限公司开发的一款地图导航产品,提供详细的地图浏览、路线规划、实时路况、公共交通查询等功能。高德地图拥有庞大的用户群体和海量的交通数据,这些数据对于交通管理、城市规划、出行服务等领域具有重要的价值。通过对高德地图交通数据的分析,我们可以了解城市交通的运行状况,识别拥堵路段,预测交通流量,为交通管理部门和出行者提供决策支持。

yansideyucsdn的博客 2684

shell入门学习笔记-15-命令详解: 三剑客之一awk-分支语句、数组

系列目录与参考文献传送门: shell入门学习笔记-序章 awk分支控制 if admindeMacBook-Pro:~ admin$ seq 5 |awk '{if($0%2) print $0}' 1 3 5 admindeMacBook-Pro:~ admin$ seq 5 |awk '{if($0%2) print $0; else print "--"}' 1 -- 3 -- 5 adm...

韩超的博客 (hanchao5272) 741

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

shell入门学习笔记-15-命令详解: 三剑客之一awk-IO操作

系列目录与参考文献传送门: shell入门学习笔记-序章 awk IO操作 语句 描述 getline 获取下一行输入作为$0的值 getline var 获取下一行输入作为var的值 command getline [var] 运行命令管道输出到$0或var next 停止当前处理的输入记录 system(cmd-line) 执行命令和返回状态 print ...

韩超的博客 (hanchao5272) 821

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

shell入门学习笔记-15-命令详解: 三剑客之一awk-语法、选项参数、匹配模式参数

系列目录与参考文献传送门: shell入门学习笔记-序章 shell-命令详解-awk AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。 其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。 这种编程及数据操作语言的最大功能取决于一个人所拥有的知识。 AWK 提供了极其...

韩超的博客 (hanchao5272) 1213

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【shell学习】【转载】学习shell有什么好书推荐

认真学习完这里推荐的资料,就算得上是shell脚本老手了,不过,凡事都是凭兴趣,我相信这篇文章对 shell脚本感兴趣的新手会有很大的帮助。这是我强烈推荐的一本书,我的shell脚本从新手到老手全靠这本书。这是一本印度人写的开源免费书籍(印度人好像比较喜欢也有能力干这事),应该算是入门书籍, 不过作者表达能力太强,交代的东西也很多,所以无论老手还是新手,看这本书都会有一定的收获。此外,这本书的作者是一个印度人,二十岁的时侯写下了这本书,那时他已经是Ubuntu 和Fedora的源码贡献者了。

Tipriest的博客 310

shell入门学习笔记-15-命令详解: 三剑客之一awk-内置变量、运算符

系列目录与参考文献传送门: shell入门学习笔记-序章 awk内置变量 变量名 速记 描述 FS File Separator 输入字段分隔符,默认是空格或制表符 OFS Output File Separator 输出字段分隔符,默认是空格 RS Row Separator 输入记录分隔符,默认是换行符\n ORS Output Row Separator 输出记录...

韩超的博客 (hanchao5272) 1186

Shell文档

Shell文档 ChinaUnix上大神網中人总结的Shell十三问?,强烈推荐,这本书讲得比较精炼,而且都是一些Shell学习中容易把握不住的一些细节难点。每一问都写得非常精彩。 同样是ChinaUnix上,wingger大神整理的Shell基础二十篇。这份文档涉及的内容比较多,我没记错的话应该有很多命令的用法,而且配备实际使用的例子,对初学者帮助甚大。 Shell脚本专家指南

robertzhouxh的专栏 627

Shell(Bash)学习· 总章

Shell(Bash)· 总章 学习记录: 初识Linux(持续更新) 初识 Shell 以及推荐教程 Shell(bash)的基本语法 Shell(bash)脚本入门 推荐学习: 阮一峰的《Bash 脚本教程》 新手linux命令必须掌握命令

Robin_Pi的博客 339

Shell 学习

Shell 学习 目录Shell 学习第1章 Shell概述第2章 Shell解析器(1)Linux提供的Shell解析器有:(2)bash和sh的关系(3)Centos默认的解析器是bash第3章 Shell脚本入门1.脚本格式2.第一个Shell脚本:helloworld3.第二个Shell脚本:多命令处理第4章 Shell中的变量4.1 系统变量4.3 特殊变量:$n4.4 特殊变量:$#4.5 特殊变量:∗、*、∗、@4.6 特殊变量:$?第5章 运算符1.基本语法2.案例实操:第6章 条件判断1.

weixin_43031220的博客 882

Shell语法简单入门

课程由阿里云大学免费提供 0. 运行 chmod +x <name>.sh ./<name>.sh 1. 变量 赋值: 直接赋值: A=aaa echo $A B="$A B" B='$A B' 注意:1) 等号两边不能有空格; 2)单引号之间的内容原封不动地制定给了变量,双引号之间仅仅是取消了空格的作用,保留特殊符号的含义。 命令的结果作为变量 : # 1. A=`date` echo $A # 2. B=$(ls -l) echo $B 与其他变量或字符串组成新字

KylinCommander 325

shell脚本从入门到精通001

将你在日常工作中任何重复性的、机械的操作,都尝试用 Shell 脚本将其自动化。这个过程本身就是最好的学习和精进。: 熟悉 Linux 基础操作,理解 Shell 环境,能够执行简单命令和编写最基础的脚本。: 系统学习 Shell 脚本的语法,能够编写具有逻辑判断和循环功能的脚本。: 关注代码风格、性能、可移植性和安全性,编写工业级脚本。: 学习高级特性和文本处理工具,编写高效、实用的脚本。

m0_72165397的博客 796

shell入门总结

Shell-->命令行解释器,接收用户程序命令,调用系统内核执行 脚本以#!/bin/bash开头(指定解析器) 脚本的常用执行方式:bash或sh+脚本的相对路径或绝对路径(不用赋予脚本+x权限) 输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x) 变量:常用系统变量-->$HOME、$PWD、$SHELL、$USER、$PATH等 自定义变量:定义变量:变量=值 撤销变量:unset 变量 声明静态变量:...

m0_58024769的博客 1017

学习Shell的一些实用资料 <转>

Shell文档 ChinaUnix上大神網中人总结的Shell十三问?,强烈推荐,这本书讲得比较精炼,而且都是一些Shell学习中容易把握不住的一些细节难点。每一问都写得非常精彩。 同样是ChinaUnix上,wingger大神整理的Shell基础二十篇。这份文档涉及的内容比较多,我没记错的话应该有很多命令的用法,而且配备实际使用的例子,对初学者帮助甚大。 Shell脚本专家指南也是一本不可

nourewang的专栏 1165
上一篇: 浅析open函数O_CLOEXEC模式和fcntl函数FD_CLOEXEC选项
下一篇: 链表 - 单链表逆序
codingnote
博客等级 码龄12年 3粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值