AWK简单总结

news2024/11/22 19:39:34

目录

  • AWK简单总结
    • 常用命令选项
    • 变量
      • 内置变量
      • 自定义变量
    • printf命令
      • 格式

AWK简单总结

awk是linux/unix下的一个强大编程工具,他支持用户自定义函数和动态正则表达式,灵活性强,运行速度快。

常用命令选项

  • -F fs:fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:
  • -v var=value:赋值一个用户定义变量,将外部变量传递给awk
  • -f scripfile:从脚本文件中读取awk命令

变量

内置变量

  1. FS输入字段分隔符默认为空白字符
    awk -v FS=“:” ‘{print $1}’ /etc/passwd #以冒号为分隔符,打印第一列
    在这里插入图片描述

  2. OFS输出字段分隔符,默认为空白字符
    awk -v FS=‘:’ -v OFS=‘|’ ‘{print $1,$2}’ /etc/passwd
    在这里插入图片描述

  3. RS :输入记录分隔符,指定输入时的换行符,原换行符仍有效
    awk -v RS=“:” ‘{print $1,$2}’ /etc/passwd 以冒号为节点进行换行打印
    在这里插入图片描述

  4. ORS :输出记录分隔符,输出时用指定符号代替换行符
    awk -v FS=‘:’ -v ORS=‘|’ ‘{print $1,$2}’ /etc/passwd
    在这里插入图片描述

  5. NF :字段数量, $NF引用最后一列,$(NF-1)引用倒数第2列
    [root@www ~]# awk -v FS=“:” ‘{print $1,$(NF-1),$NF}’ /etc/passwd
    在这里插入图片描述

  6. NR行号,后可跟多个文件,第二个文件行号继续从第一个文件最后行号开始
    [root@www ~]# awk -v FS=‘:’ ‘{print $1,NR}’ /etc/passwd | head -n 5
    在这里插入图片描述

  7. FNR :各文件分别计数, 行号,后跟一个文件和NR一样,跟多个文件,第二个文件行号从1开始
    awk -v FS=‘:’ ‘{print $1,FNR}’ cdx.file /etc/passwd| head -n 5
    在这里插入图片描述
    在这里插入图片描述

  8. FILENAME :当前文件名
    [root@along ~]# awk ‘{print FILENAME}’ cdx.file
    在这里插入图片描述

  9. ARGC :命令行参数的个数
    [root@www ~]# awk ‘BEGIN {print ARGC}’ 1 2 3 4 3在这里插入图片描述

  10. ARGV :数组,保存的是命令行所给定的各参数,查看参数

[root@www ~]# awk 'BEGIN {print ARGV[0]}' 1 2 3 4 3
awk
[root@www ~]# awk 'BEGIN {print ARGV[4]}' 1 2 3 4 3
4
[root@www ~]# awk 'BEGIN {print ARGV[6]}' 1 2 3 4 3

[root@www ~]# awk 'BEGIN {print ARGV[5]}' 1 2 3 4 3
3

在这里插入图片描述

自定义变量

自定义变量( 区分字符大小写)

(1)-v var=value

① 先定义变量,后执行动作print

[root@www ~]# awk -v name="tang" -F: '{print name":"$0}' /etc/passwd  | head -n 5
tang:root:x:0:0:root:/root:/bin/bash
tang:bin:x:1:1:bin:/bin:/sbin/nologin
tang:daemon:x:2:2:daemon:/sbin:/sbin/nologin
tang:adm:x:3:4:adm:/var/adm:/sbin/nologin
tang:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

在这里插入图片描述
② 在执行动作print后定义变量

[root@www ~]# awk -F: '{print name":"$0;name="tang"}' /etc/passwd  | head -n 5
:root:x:0:0:root:/root:/bin/bash
tang:bin:x:1:1:bin:/bin:/sbin/nologin
tang:daemon:x:2:2:daemon:/sbin:/sbin/nologin
tang:adm:x:3:4:adm:/var/adm:/sbin/nologin
tang:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

在这里插入图片描述
(2)在program 中直接定义

可以把执行的动作放在脚本中,直接调用脚本 -f

[root@www ~]# cat 1.txt
{name="tang";print name,$1}
[root@www ~]# awk -f 1.txt /etc/passwd  | head -n 5
tang root:x:0:0:root:/root:/bin/bash
tang bin:x:1:1:bin:/bin:/sbin/nologin
tang daemon:x:2:2:daemon:/sbin:/sbin/nologin
tang adm:x:3:4:adm:/var/adm:/sbin/nologin
tang lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

在这里插入图片描述

printf命令

格式

(1)格式化输出

printf` `"FORMAT"``, item1,item2, ...

① 必须指定FORMAT

不会自动换行,需要显式给出换行控制符

③ FORMAT 中需要分别为后面每个item 指定格式符

(2)格式符:与item 一一对应

  • %c: 显示字符的ASCII码

  • %d, %i: 显示十进制整数

  • %e, %E: 显示科学计数法数值

  • %f :显示为浮点数,小数** %5.1f,带整数、小数点、整数共5位,小数1位,不够用空格补上

  • %g, %G :以科学计数法或浮点形式显示数值

  • %s :显示字符串;例:%5s最少5个字符,不够用空格补上,超过5个还继续显示

  • %u :无符号整数

  • %%: 显示% 自身

在这里插入图片描述

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

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

相关文章

利用SMB协议实现局域网内设备文件的共享

文章目录参考资料说明步骤1:[windows]开启SMB协议步骤2:[windows]创建新的用户账号步骤3:[windows]共享文件夹属性-共享-共享属性-共享-高级共享步骤4:[windows]查看共享文件的主机在局域网内的IP地址步骤5:[ipad]打开…

华为机试题:HJ35 蛇形矩阵(python)

文章目录知识点详解1、input():获取控制台(任意形式)的输入。输出均为字符串类型。1.1、input()与list(input())的区别、及其相互转换方法2、print() :打印输出。3、算术运算符4、整型int() :将字符串或数字转换为整型…

π122M31 双通道数字隔离器 CAN通信隔离兼容ADuM7241ARZ

π122M31 双通道数字隔离器 CAN通信隔离兼容ADuM7241ARZ电路简单、稳定性更高,具有出色的性能特征和可靠性,整体性能优于光耦和基于其他原理的数字隔离器产品。 产品传输通道间彼此独立,可实现多种传输方向的配置,可实现 5.0kVrms…

excel软件应用:如何妙用Word拆分单元格数据

打仗亲兄弟,上阵父子兵!Word和Excel就是一对好兄弟,虽然各有分工,但有时也能彼此帮忙。Excel中的莫名其妙问题找Word帮忙解决,往往有效。譬如从平台中导出的数据,先使用Word做一次符号处理再粘贴到Excel中处…

Go语言基础入门第五章

string 什么是stringGo中的字符串是一个字节的切片,可以通过将其内容封装在""中来创建字符串,Go中的字符串是 Unicode 兼容的,并且是 UTF-8 编码。 字符串是一些字节的集合。 package mainimport "fmt"func main() {st…

白盒测试用例设计-笔记

白盒测试用例设计方法白盒设计方法静态:桌面检查、代码审查、代码走查、代码扫描工具动态:逻辑覆盖法:语句覆盖、判断覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖基本路径测试法逻辑覆盖法:是通过对程序逻辑结构的遍历…

97. BERT微调、自然语言推理数据集以及代码实现

1. 微调BERT 2. 句子分类 3. 命名实体识别 4. 问题回答 5. 总结 即使下游任务各有不同,使用BERT微调时只需要增加输出层但根据任务的不同,输入的表示,和使用的BERT特征也会不一样 6. 自然语言推理数据集 斯坦福自然语言推断语料库&#xf…

BP神经网络算法实现

目录 一、实验数学原理 二、实验算法和实验步骤 三、结果分析 1. 均方误差变化的影响 2. 迭代次数变化的影响 3. 学习效率变化的影响 四、预测 一、实验数学原理 激活函数: 一般使用S形函数(即sigmoid函数),比如可以使用log-…

【爬虫系列】Python如何实现进度条效果?

一、需求 在爬取数据过程中,发现不看输出日志是不知道当前的爬取进度,而单纯靠控制台输出日志信息也不方便判断。因此,就想办法给爬取过程加个进度条,实时展示当前的爬取进度。 有了这个需求和想法之后,那如何实现呢…

k8s中不同名称空间下的pod无法解析服务名

1、背景 公司的项目需要使用容器化部署,为了更好的维护和管理,我将各个项目按照命名空间进行隔离开,但是却发现存在一些问题 不同的系统间需要项目调用,而且是按照服务名进行调用,但是却导致不同名称空间下pod无法解析…

mac 快应用开发工具 真机调试 usb调试 提示Error:没有找到Android设备

项目场景: 项目场景:mac使用快应用开发工具连接Android手机 问题描述 显示错误没有找到Android设备 原因分析: adb连接的问题 解决方案: 1.确保手机开启开发者模式 2.确保手机与mac的连接线能传输数据,有的线只能…

python+moviepy音视频处理(一):基本操作

目录 视频处理 视频加载和输出 视频转换gif 视频裁剪 视频音量调节 去掉视频声音 视频中的音频提取与替换 获取视频属性 倍数播放视频 截取视频某帧为封面 多视频拼接 音频处理 替换视频文件的音频 多个音频文件拼接 安装:pip install moviepy 中文官…

【自学Docker】Docker stats命令

Docker stats命令 大纲 docker stats命令教程 docker stats 命令可以用于动态显示 Docker容器 的资源消耗情况,包括:CPU、内存、网络I/O。docker stats命令也可以指定已停止的容器,但是不会返回任何信息。 docker stats命令语法 haicoder…

Windows下载安装Nignx

下载 下载地址:http://nginx.org/en/download.html 下载完成以后,得到nginx压缩包; Nginx启动 方式一:可执行文件启动 双击nginx.exe启动 现在,我们打开任务管理器,如果发现nginx进程存在,说明启动完成; 方式二:命令行启动 进入nginx所在…

【Mysql第三期 基本查询语句结构】

文章目录1. SQL概述1.1 SQL背景知识1.2SQL 分类2. SQL语言的规则与规范2.1 基本规则2.2 SQL大小写规范 (建议遵守)2.3 注 释2.4 命名规则(暂时了解)3.基本的SELECT语句3.1 查询基本结构3.2 列的别名3.3 去除重复行扩展windows cmd…

同步FIFO设计verilog设计及仿真

同步FIFO设计 1.功能定义: 用16*8 RAM实现一个同步先进先出(FIFO)队列设计。由写使能端控制该数据流的写入FIFO,并由读使能控制FIFO中数据的读出。写入和读出的操作由时钟的上升沿触发。当FIFO的数据满和空的时候分别设置相应的高电平加以指示。 2.顶层信号定义: 信号名…

最小生成树问题(Prim算法和Kruskal算法)

问题引入: 这算是一道模板题了,只不过这次在做的时候感觉又学到了些新的东西,之前都是数据结构里学的,因为用惯了C,所以就想摆脱那些邻接数组之类的写法,用STL试一下,在其中把我遇到的一些问题写…

【论文翻译】边缘应用中加速卷积神经网络的剪枝算法综述

摘要 随着卷积神经网络(CNN)模型大小的增加,模型压缩和加速技术对于在边缘设备上部署这些模型变得至关重要。在本文中,我们对修剪进行了全面的调查,这是一种主要的压缩策略,可以从CNN模型中删除非关键或冗…

iOS_Memory Leak 内存泄露治理

1、内存分类 官方文档介绍 app 的内存分三类: Leaked memory:Memory unreferenced by your application that cannot be used again or freed (also detectable by using the Leaks instrument) Abandoned memory:Memory still referenced b…