当前位置: 首页 > news >正文

awk编辑器

awk编辑器

  • awk编辑器
    • 工作原理
      • sed与awk
    • 命令格式
    • awk常见的内建变量
      • BEGIN与END模式
      • 通过管道符号、双引号调用shell命令
    • OFS
    • BEGIN模式(数组)

awk编辑器

工作原理

逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。

sed与awk

  • sed:命令常用于一整行的处理
  • awk:比较倾向于将一行分成多个“字段”然后再进行处理
    awk信息的读入也是逐条读取的,执行结果可以通过print的功能将字段数据打印显示。在使用awk命令的过程中,可以使用逻辑操作符**“&&”表示“与”“||”表示“或”“!”表示“非”**;还可以进行简单的数学运算,如+、-、*、/、%、^分别表示加、减、乘、除、取余和乘方。

命令格式


awk  选项  '模式或条件  {操作}'  文件  1  文件2 ……

awk  -f  脚步文件  文件1  文件2 ……
 

awk常见的内建变量

FS列分隔符。指定每行文本的字段分隔符,默认为空格或制表符。与“-F”作用相同
NF当前处理的行的字段个数
NR当前处理的行的行号(序数)
$0当前处理行的整行内容
$n当前处理行的第n个字段(第n列)
FILENAME被处理的文件名
RS行分隔符。 awk从文件上读取资料时,将根据RS的定义把资料切割成许多条记录,而awk一次仅读入一条记录,以进行处理。预设值是‘\n’

$0 :在shell主代码中代表的是脚本本身;在函数体代表的是函数名;在awk命令中代表的是当前整行内容

one
two
three
four
FFF
five
six
seven
eigth
nine
ten
eleven
twelve

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

$n~"xxx"    ~代表的是指定字段包含某个字符串
$n=="xxx"   ~代表的是指定字段为某个字符串
$n!="xxx"   ~代表的是指定字段不为某个字符串

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

BEGIN与END模式


awk  'BEGIN  {操作1}; 条件 {操作2}; END {操作3}' 文件X
BEGIN  {操作1}awk 在读取文件之前执行的操作
条件 {操作2}awk 逐行读取文件时执行的操作
END {操作3}awk 在处理完文件所有行后执行的操作 


 
 例:
awk 'BEGIN {a=0}; /nologin$/ {a++;print a,$0}; END {print "共有"a"行"}' /etc/passwd
BEGIN {a=0} :                  定义变量a=0
/nologin$/ {a++;print a,$0}:   执行以nologin结尾,且每执行一个a自加1,输出
END {print "共有"a"行"}  :      输出以nologin结尾的行数  


在这里插入图片描述

BEGIN模式表示,在处理指定的文本之前,需要执行BEGIN模式中指定的动作,awk处理指定的文本,之后再执行END模式中指定的动作,END{}语句块中,往往会放入打印结果等语句

通过管道符号、双引号调用shell命令

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

OFS


seq 10 | awk '{getline; print $0}'
getline 如果左右无 |< ,是awk先读取文件首行内容,然后再由getline读取行内容并移动到下一行;

awk 'BEGIN {"hostname" | getline; print $0}'
getline 如果左右有 |< ,getline用于直接获取内容,此时$0的值为getline获取内容

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

BEGIN模式(数组)

在这里插入图片描述
在这里插入图片描述

{a[$1]1+t}
awk根据指定字段读取每行的字段内容,使用字段内容作为数组的下标,如果出现相同内容的行,则用这个行内容做的数组的值自增1

END{for(i in a) {print a[ i],i}}
awk 读取完所有行内容后,使用for循环遍历这个数组的下标,打印每个下标出现的次数和下标的值

相关文章:

  • 基于Java毕业设计游泳馆管理平台源码+系统+mysql+lw文档+部署软件
  • 2022年全国大学生数学建模竞赛C题思路与程序
  • `算法知识` 字符串哈希
  • 打造这样的“超级云APP”有什么优势?
  • 一篇文章带你理解Thread(多线程)的基础用法
  • harbor部署实录
  • 计算机毕业设计ssmEE的仓库管理系统93c6b系统+程序+源码+lw+远程部署
  • MySQL group by后取每个分组中最新一条数据
  • JVM:(十六)垃圾回收器
  • 节点流和处理流详解
  • MySQL binlog 数据恢复
  • ArcGIS中添加在线地图(影像图、街道图等)
  • Opencv图像模板匹配
  • c语言进阶: 指针的进阶(上)
  • python使用PIL模块加载图像、通过resize函数改变图像的大小、使用save函数保存处理过的图像
  • 【翻译】babel对TC39装饰器草案的实现
  • 【技术性】Search知识
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Android单元测试 - 几个重要问题
  • android图片蒙层
  • Angular数据绑定机制
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • HTTP--网络协议分层,http历史(二)
  • JS专题之继承
  • linux安装openssl、swoole等扩展的具体步骤
  • MySQL主从复制读写分离及奇怪的问题
  • npx命令介绍
  • select2 取值 遍历 设置默认值
  • yii2权限控制rbac之rule详细讲解
  • 好的网址,关于.net 4.0 ,vs 2010
  • 力扣(LeetCode)56
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 使用 QuickBI 搭建酷炫可视化分析
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 我建了一个叫Hello World的项目
  • 物联网链路协议
  • 项目管理碎碎念系列之一:干系人管理
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 一些css基础学习笔记
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #if 1...#endif
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (14)Hive调优——合并小文件
  • (C语言)二分查找 超详细
  • (待修改)PyG安装步骤
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (排序详解之 堆排序)
  • (一) springboot详细介绍
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .net 7 上传文件踩坑
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?